테스트 하다보면 적이 어디서 나타났는지 찾기 어렵다. 마우스 우클릭을 하면 적을 보게 하겠다. 적을 고를 수는 없다.

첫번째 방법은 씬뷰상의 MONSTER TAG를 이용해 적을 찾은후 LookAt하는 방법이다.

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

public class RightClick : MonoBehaviour
{
    // Start is called before the first frame update
    public GameObject[] monster;  //컴포넌트의 캐시를 처리할 변수
    public int idx = 0;

    // Update is called once per frame
    void Update()
    {
        monster = GameObject.FindGameObjectsWithTag("MONSTER");
        if (Input.GetMouseButtonDown(1)) {
            idx = monster.Length-1;
            while (idx>=0 && monster[idx].GetComponent<MonsterCtrl>().state == MonsterCtrl.State.DIE) idx--;
            transform.LookAt(monster[idx].transform);
            Debug.Log(monster.Length);
        }
    }
}

2번째 방법은 GameManager MonsterPool을 이용해 active한걸 찾아 LookAt하는 방법이다

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

public class RightClick : MonoBehaviour
{
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(1)) {
            GameObject _monster = FindMonster();
            if (_monster != null) {
                transform.LookAt(_monster.transform);
            }
        }
    }
    GameObject FindMonster() {
        foreach (var _monster in GameManager.instance.monsterPool) {
            if (_monster.activeSelf == true) {
                return _monster;
            }
        }
        return null;
    }
}

실행후 우클릭을 하면 적으로 자동 향합니다. 천천히 움직이지는 않습니다.

모든 Active한 Monster의 거리를 비교해 가장 가까운 몬스터를 향하게 할수도 있을듯.

+ Recent posts