コード例 #1
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "EnemyTempPlatformProbe")
        {
            EnemyCombatManager _enemy = other.gameObject.transform.parent.GetComponent <EnemyCombatManager>();
            if (_enemy != null)
            {
                Debug.Log("Probed enemy combat manager");
                if (!PlatformAppears)
                {
                    NavMeshAgent _agent = _enemy.gameObject.GetComponent <NavMeshAgent>();
                    Rigidbody    _body  = _enemy.gameObject.GetComponent <Rigidbody>();
                    if (_agent != null && _body != null)
                    {
                        if (_agent.enabled && _body.isKinematic)
                        {
                            _enemy.TriggerGivePhysControlOnAll(true);
                        }
                    }
                }

                OverlappingNPCs.Add(_enemy);
            }
        }
    }
コード例 #2
0
 private void OnTriggerExit(Collider other)
 {
     if (other.gameObject.tag == "EnemyTempPlatformProbe")
     {
         EnemyCombatManager _enemy = other.gameObject.transform.parent.GetComponent <EnemyCombatManager>();
         if (_enemy != null)
         {
             OverlappingNPCs.Remove(_enemy);
         }
     }
 }
コード例 #3
0
 private void OnTriggerEnter(Collider other)
 {
     Debug.Log("Stomped trigger enter " + other.gameObject + " with " + this.transform.forward.normalized * -1 * StompForce);
     if (other.gameObject.tag == "EnemyHat")
     {
         EnemyCombatManager _enemyCombatManager = other.transform.parent.GetComponent <EnemyCombatManager>();
         if (_enemyCombatManager != null)
         {
             _enemyCombatManager.ReceiveStomp(this.transform.forward.normalized * -1 * StompForce, 0.5f);
             //Debug.Log("Stomped " + other.gameObject + " with " + this.transform.forward.normalized * -1 * StompForce);
         }
     }
 }
コード例 #4
0
 /// <summary>
 /// Author: Feiyang
 /// Attack Logic
 /// </summary>
 /// <param name="other"></param>
 private void OnTriggerStay(Collider other) {
     // when invicible, attack every enemy that is colliding with the player
     if (IsAttacking || IsInvicible) {
         EnemyCombatManager _enemyCombatManager = other.gameObject.GetComponent<EnemyCombatManager>();
         if (_enemyCombatManager != null && CurrentAttackMotion != null) {
             // calculate regular attack
             Vector3 _AttackVector = this.transform.forward.normalized * CurrentAttackMotion.Force;
             //Debug.Log("Trigger stay Attacked with " + _AttackVector);
             _enemyCombatManager.ReceiveAttack(_AttackVector, CurrentAttackMotion.KnockBackTime);
             StopAttack();
         }
     }   
 }
コード例 #5
0
    /// <summary>
    /// Author: Feiyang
    /// Initiate Smash
    /// </summary>
    public void Smash() {

        Collider[] colliders = Physics.OverlapSphere(transform.position, SmashRadius);

        foreach (Collider _nearby in colliders) {
            GameObject _nearbyObjects = _nearby.gameObject;
            EnemyCombatManager _enemyCombatManager = _nearbyObjects.GetComponent<EnemyCombatManager>();
            if (_enemyCombatManager != null) {
                _enemyCombatManager.ReceiveSmash(DefaultSmashTime,
                DefaultSmashForce,
                this.transform.position,
                SmashRadius);
            }
        }
    }
コード例 #6
0
    void Start()
    {
        controller = GetComponent<NavMeshAgent>();
        enemyAnimation = GetComponent<Animator>();
        combatManager = GetComponent<EnemyCombatManager>();
        photonView = GetComponent<PhotonView>();
        obstacle = GetComponent<NavMeshObstacle>();
        controller.avoidancePriority = Random.Range(0, 99);
        
        //player = GameObject.FindGameObjectWithTag("Player");
        initialPosition = transform.position;
        controller.stoppingDistance = chaseStopDistance;

        if(PhotonNetwork.isMasterClient)
        {
            StartCoroutine(Movement());
        }
    }