private void Start()
 {
     if (m_PlayerInfo == null)
     {
         m_PlayerInfo = GameObject.Find("Spine1").GetComponent <PlayerInfo>();
     }
     m_LastFrameCostume = m_PlayerInfo.m_CostumeState;
 }
示例#2
0
 public void ChangeCostumeState(int costumeState)
 {
     if (costumeState == 0)
     {
         m_CostumeState = CostumeState.Blue;
     }
     else if (costumeState == 1)
     {
         m_CostumeState = CostumeState.Red;
     }
     else if (costumeState == 2)
     {
         m_CostumeState = CostumeState.Green;
     }
     else if (costumeState == 3)
     {
         m_CostumeState = CostumeState.Black;
     }
 }
示例#3
0
 public void ChangeCostumeState(CostumeState costumeState)
 {
     m_CostumeState = costumeState;
 }
    void Update()
    {
        m_Sight.origin = new Vector3(transform.position.x, transform.position.y + 0.5f, transform.position.z);
        Vector3 playerPosition = new Vector3(m_PlayerInfo.transform.position.x, m_PlayerInfo.transform.position.y - yoffset, m_PlayerInfo.transform.position.x);

        m_Sight.direction = m_PlayerInfo.transform.position - transform.position;
        RaycastHit rayHit;
        Vector3    fwd = transform.TransformDirection(Vector3.forward);

        if (Physics.Raycast(m_Sight, out rayHit, m_ChaseRange, 1 << 8 | 1 << 10))
        {
            if (rayHit.collider.gameObject.layer == 8)
            {
                Debug.DrawLine(m_Sight.origin, rayHit.point, Color.green);
                m_NotSeenPlayer = 0;
                m_SeenLastFrame = true;
                Debug.Log("HitPlayer");
                if (m_CurrentGuaranteedAngerTimer > 0)
                {
                    m_AggresiveToPlayer = true;
                    m_EnemyState        = EnemyState.Aggresive;
                    m_Animator.SetInteger("EnemyState", 2);
                }
                else
                {
                    if (m_SeenLastFrame == true && m_LastFrameCostume != m_PlayerInfo.m_CostumeState)
                    {
                        m_CurrentGuaranteedAngerTimer = m_OriginalGuaranteedAngerTimer;
                    }
                    if (m_PlayerInfo.m_CostumeState != m_EnemyInfo.m_CostumeState || m_CurrentGuaranteedAngerTimer > 0)
                    {
                        m_AggresiveToPlayer = true;
                        m_EnemyState        = EnemyState.Aggresive;
                        m_Animator.SetInteger("EnemyState", 2);
                    }
                    else
                    {
                        m_AggresiveToPlayer = false;
                        m_EnemyState        = EnemyState.Friendly;
                        m_Animator.SetInteger("EnemyState", 0);
                    }
                }
            }
            else
            {
                Debug.DrawLine(m_Sight.origin, rayHit.point, Color.red);
                m_NotSeenPlayer += Time.deltaTime;
                m_SeenLastFrame  = false;
            }
        }
        else
        {
            m_SeenLastFrame  = false;
            m_NotSeenPlayer += Time.deltaTime;
        }

        if (m_CurrentGuaranteedAngerTimer > 0)
        {
            m_CurrentGuaranteedAngerTimer -= Time.deltaTime;
        }
        else
        {
            m_CurrentGuaranteedAngerTimer = 0;
            if (m_NotSeenPlayer > 20)
            {
                m_EnemyState = EnemyState.Neutral;
                m_Animator.SetInteger("EnemyState", 1);
            }
        }
        //m_TimerText.text = m_CurrentGuaranteedAngerTimer.ToString();
        m_TimerText.text   = m_EnemyState.ToString() + m_CurrentGuaranteedAngerTimer.ToString();
        m_LastFrameCostume = m_PlayerInfo.m_CostumeState;
    }