본문 바로가기
게임개발/게임플랫폼 응용 프로그래밍

시즈탱크 2단계

by pudding81 2024. 2. 29.

 

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Tank : MonoBehaviour
{
   
    public GameObject tank;
    public GameObject siege;

    public float speed = 5.0f; // 이동 속도
    private Vector3 targetPos; // 목표 위치
    private bool isMoving = false; // 이동 중 여부
    private bool isSiege = false; // 시즈모드 여부

    void Start()
    {
        tank = transform.GetChild(0).gameObject;
        siege = transform.GetChild(1).gameObject;

       
        StartCoroutine("CoMove");

        
    }



    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.O))
        {
            isSiege = !isSiege; // 시즈 모드 토글
            siege.SetActive(isSiege);
            tank.SetActive(!isSiege);
            if (isSiege)
            {
                isMoving = false; // 시즈 모드일 때는 이동 중지
            }
            else
            {
                isMoving = true;
            }

        }
    }
    IEnumerator CoMove()
    {
        while (true)
        {
            // 마우스 우클릭 감지
            if (Input.GetMouseButtonDown(1) && !isSiege) // 시즈 모드가 아닐 때만 이동
            {
                // 마우스 포인터 위치를 월드 좌표로 변환
                targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                targetPos.z = transform.position.z; // z 좌표는 변경하지 않음

              
                // 탱크 이미지 방향전환해주기
                if (transform.position.x < targetPos.x) this.gameObject.transform.localScale = new Vector3(1, 1, 1);
                else this.gameObject.transform.localScale = new Vector3(-1, 1, 1);
                isMoving = true; // 이동 시작
            }

            if (isMoving && !isSiege) //움직이고 있을때 & 시즈모드가 아닐때 
            {
                // 현재 위치에서 목표 위치로 천천히 이동
                transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);


                // 목표 위치에 도달했는지 확인
                if (transform.position == targetPos)
                {
                    isMoving = false; // 이동 중지
                }
            }

            yield return null;
        }
    }

   

}