
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;
}
}
}
'게임개발 > 게임플랫폼 응용 프로그래밍' 카테고리의 다른 글
시즈탱크 1단계 코드 수정 (0) | 2024.02.29 |
---|---|
코루틴을 사용하여 Delay 연습하기 (0) | 2024.02.29 |
시즈탱크 1단계 - 에러 수정전 (1) | 2024.02.29 |
벌쳐 지뢰 매설하기 (0) | 2024.02.28 |
DropShip in BionicUnits (0) | 2024.02.28 |