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

public class Model_AI_Default : MonoBehaviour {

    float m_fSpeed = 1f;

    bool isTarget = false;
    GameObject m_Target_Obj = null;

     

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        if (!isTarget) {
            if (FindNeedTarget ("Player"))
                isTarget = true;
            else
                isTarget = false;
        } else {
            GameObject CollMgr = GetCollisionCom ();
            bool isColl = CollMgr.GetComponent<CollisionComponent> ().Collision_Sphere (m_Target_Obj.transform.position, transform.position, 0.5f, 0.5f);
            if(isColl)
                FollowTarget ();
        }
    
    //  이렇게 써도 무방하다.
    //    if (FindNeedTarget ("Player"))
    //        FollowTarget ();
    }

    protected bool FindNeedTarget(string szTag)
    {
        // Target들을 찾는다
        GameObject[] Target_Arr = GameObject.FindGameObjectsWithTag (szTag);

        //Debug.Log (Target_Arr.Length);

        if (Target_Arr.Length == 0)
            return false;

        int iTargetNum = 0;
        float fDist_Ori = 0f;

        // 가장 가까운 target를 찾는다.
        for (int i = 0; i < Target_Arr.Length; ++i) {
            Vector3 vDist = Target_Arr [i].transform.position - transform.position;
            float fDist_New = vDist.magnitude;
            if (i == 0) {
                iTargetNum = i;
                fDist_Ori = fDist_New;
            } else {
                if (fDist_Ori > fDist_New) {
                    iTargetNum = i;
                    fDist_Ori = fDist_New;
                }
            }
        }
        m_Target_Obj = Target_Arr [iTargetNum];
        return true;
    }
    protected void FollowTarget()//target이 있으면 따라간다.
    {
        if (m_Target_Obj != null) {
            Vector3 vDir = m_Target_Obj.transform.position - transform.position;
            vDir = vDir.normalized;

            transform.Translate (vDir * m_fSpeed * Time.deltaTime, Space.World);
        }
    }

    protected GameObject GetCollisionCom()
    {
        return GameObject.Find ("ComponentMgr");
    }
}

'프로그래밍 > Unity' 카테고리의 다른 글

코루틴 사용법  (0) 2018.05.14
Unity Google 연동  (0) 2017.11.13
UI가 캐릭터를 따라가야할때 좌표 변환법  (0) 2017.10.26
Scene의 모든 오브젝트 가져오는 법  (0) 2017.09.18
Unity 기본 Input Movement  (0) 2017.09.18

+ Recent posts