using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tank : MonoBehaviour
{
[SerializeField] GameObject indicator;
[SerializeField] Sprite tank_mode;
[SerializeField] Sprite siege_mode;
public float speed = 5.0f; // 이동 속도
private Vector3 targetPosition; // 목표 위치
private bool isMoving = false; // 이동 중 여부
private bool isSiege = false; // 시즈모드 여부
void Start()
{
indicator.SetActive(false);
StartCoroutine("CoMove");
StartCoroutine("ChangeMode");
}
IEnumerator CoMove()
{
while (true)
{
// 마우스 우클릭 감지
if (Input.GetMouseButtonDown(1) && !isSiege) // 시즈 모드가 아닐 때만 이동
{
// 마우스 포인터 위치를 월드 좌표로 변환
targetPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
targetPosition.z = transform.position.z; // z 좌표는 변경하지 않음
StopCoroutine("MoveIndicator");
StartCoroutine("MoveIndicator",targetPosition);
if (transform.position.x < targetPosition.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, targetPosition, speed * Time.deltaTime);
// 목표 위치에 도달했는지 확인
if (transform.position == targetPosition)
{
isMoving = false; // 이동 중지
}
}
yield return null;
}
}
IEnumerator ChangeMode()
{
while (true)
{
if (Input.GetKeyDown(KeyCode.O))
{
isSiege = !isSiege; // 시즈 모드 토글
if (isSiege)
{
this.gameObject.GetComponent<SpriteRenderer>().sprite = siege_mode;
isMoving = false; // 시즈 모드일 때는 이동 중지
}
else
{
this.gameObject.GetComponent<SpriteRenderer>().sprite = tank_mode;
// 마우스 우클릭으로 새로운 위치를 지정하기 전까지 이동하지 않음
}
}
yield return null;
}
}
IEnumerator MoveIndicator(Vector3 position)
{
this.indicator.SetActive(true);
this.indicator.transform.position = position;
yield return new WaitForSeconds(0.5f);
this.indicator.SetActive(false);
yield break;
}
}
'산대특 > 게임 플랫폼 응용 프로그래밍' 카테고리의 다른 글
탱크 시즈모드 Splash 공격 구현하기 (0) | 2024.02.29 |
---|---|
탱크 공격 과 폭발 이펙트 + 적 삭제 구현하기 (0) | 2024.02.29 |
[Zombero] Boss Stage 만들기 (0) | 2024.02.29 |
[HeroShooter -> Zombero] Stage4 NavMesh 경로 개선 (0) | 2024.02.27 |
[Zombero] 시작 스테이지 (Start) (0) | 2024.02.27 |