コード例 #1
0
    public void OnTriggerEnter(Collider other)
    {
        if (m_isReturning)
        {
            return;
        }

        if (other.gameObject.CompareTag(GL.TAG_BALL))
        {
            AttackerBehavior att = other.gameObject.GetComponentInParent <AttackerBehavior>();
            if (att.HasBall())
            {
                m_GP.Arrested(this, att);
            }
        }

        if (other.gameObject.CompareTag(GL.TAG_ATTACKER))
        {
            AttackerBehavior att = other.gameObject.GetComponent <AttackerBehavior>();
            if (att.HasBall())
            {
                m_GP.Arrested(this, att);
            }
        }
    }
コード例 #2
0
ファイル: Gameplay.cs プロジェクト: lhbkhanh/Unity2020Everus
    public AttackerBehavior FindAttackersNear(AttackerBehavior attacker)
    {
        AttackerBehavior near     = null;
        float            nearDist = 0.0f;

        foreach (var att in m_Attackers)
        {
            if (att == attacker || att.PlayActive)
            {
                continue;
            }
            if (near == null)
            {
                near     = att;
                nearDist = Vector3.Distance(attacker.transform.position, att.transform.position);
                continue;
            }
            float dist = Vector3.Distance(attacker.transform.position, att.transform.position);
            if (dist < nearDist)
            {
                nearDist = dist;
                near     = att;
            }
        }
        return(near);
    }
コード例 #3
0
    void OnTriggerStay2D(Collider2D collider)
    {
        AttackerBehavior attacker = collider.gameObject.GetComponent <AttackerBehavior>();

        if (attacker)
        {
            anim.SetTrigger("underAttackTrigger");
        }
    }
コード例 #4
0
    void OnTriggerEnter2D(Collider2D col)
    {
        AttackerBehavior attacker = col.gameObject.GetComponent <AttackerBehavior>();
        Health           health   = col.gameObject.GetComponent <Health>();

        if (attacker && health)
        {
            levelManager.LoadLevel("03_Lose");
        }
    }
コード例 #5
0
ファイル: Gameplay.cs プロジェクト: lhbkhanh/Unity2020Everus
    public bool PassBall(AttackerBehavior attKeeper)
    {
        AttackerBehavior near = FindAttackersNear(attKeeper);

        if (near != null)
        {
            //m_Ball.transform.SetParent(near.transform, false);
            attKeeper.LostBall();
            near.PickBall(m_Ball.transform);
            return(true);
        }
        return(false);
    }
コード例 #6
0
 void OnCollisionEnter(Collision collision)
 {
     if (m_isReturning)
     {
         return;
     }
     if (collision.gameObject.CompareTag(GL.TAG_ATTACKER))
     {
         AttackerBehavior att = collision.gameObject.GetComponent <AttackerBehavior>();
         if (att.HasBall())
         {
             m_GP.Arrested(this, att);
         }
     }
 }
コード例 #7
0
    bool isTimeToSpawn(GameObject attackerGameObject)
    {
        AttackerBehavior attacker = attackerGameObject.GetComponent <AttackerBehavior>();

        float meanSpawnDelay  = attacker.seenEverySeconds;
        float spawnsPerSecond = 1 / meanSpawnDelay;

        if (Time.fixedDeltaTime > meanSpawnDelay)
        {
            Debug.LogWarning("Spawn Rate capped by Frame Rate");
        }

        float threshold = spawnsPerSecond * Time.deltaTime / 5;

        return(Random.value < threshold);
    }
コード例 #8
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        AttackerBehavior attacker = collider.gameObject.GetComponent <AttackerBehavior>();
        Health           health   = collider.gameObject.GetComponent <Health>();

        if (attacker && health)
        {
            health.DealDamage(Damage);
            if (Debuffer)
            {
                attacker.Debuff();
            }
            if (destructible == true)
            {
                Destroy(gameObject);
            }
        }
    }
コード例 #9
0
ファイル: Gameplay.cs プロジェクト: lhbkhanh/Unity2020Everus
    public void Arrested(EnemyBehavior enemy, AttackerBehavior attBallKeeper)
    {
        if (!attBallKeeper.HasBall())
        {
            return;
        }

        if (PassBall(attBallKeeper))
        {
            attBallKeeper.Inactivated();
            enemy.Inactivated();
        }
        else
        {
            attBallKeeper.Inactivated();
            Protected();
        }
    }
コード例 #10
0
ファイル: Gameplay.cs プロジェクト: lhbkhanh/Unity2020Everus
 private void SpawnAttacker(Vector3 spawnPost)
 {
     if (m_AttackerEnergy.SpawnPlayer(AttDef.EnergyCost))
     {
         GameObject attacker = Instantiate(m_AttackerPfab, spawnPost, Quaternion.identity, m_AttackersGroup.transform);
         Transform  target;
         if (AttackersHasBall())
         {
             target = null;
         }
         else
         {
             target = m_Ball.transform;
         }
         AttackerBehavior att = attacker.GetComponent <AttackerBehavior>();
         att.Init(this, target, AttDef.SpawnTime);
         m_Attackers.Add(att);
     }
 }
コード例 #11
0
 // Use this for initialization
 void Start()
 {
     anim      = GetComponent <Animator>();
     atkbehave = GetComponent <AttackerBehavior>();
 }
コード例 #12
0
ファイル: Gameplay.cs プロジェクト: lhbkhanh/Unity2020Everus
 public void DestroyAttacker(AttackerBehavior att)
 {
     m_Attackers.Remove(att);
     Destroy(att.gameObject, 0.1f);
 }