Exemplo n.º 1
0
        protected override void CheckDistance()
        {
            var   position         = transform.position;
            float distanceToTarget = Vector3.Distance(position, target.position);

            // Approach but never more than attack radius.
            if (distanceToTarget <= chaseRadius && distanceToTarget > attackRadius)
            {
                if ((currentState == EnemyState.Idle || currentState == EnemyState.Walk) &&
                    currentState != EnemyState.Staggered)
                {
                    Vector3 movement = Vector3.MoveTowards(position,
                                                           target.position, moveSpeed * Time.deltaTime);

                    ChangeAnim(movement - position);
                    EnemyRigidBody.MovePosition(movement);

                    EnemyAnimator.SetBool(AnimatorWakeUp, true);
                }
            }
            // If not chasing the payer, move towards next patrol point.
            else if (distanceToTarget > attackRadius)
            {
                if (Vector3.Distance(transform.position, currentGoal.position)
                    > distanceTolerance.initialValue)
                {
                    Vector3 movement = Vector3.MoveTowards(position,
                                                           currentGoal.position, moveSpeed * Time.deltaTime);

                    ChangeAnim(movement - position);
                    EnemyRigidBody.MovePosition(movement);
                }
                // Change goal
                else
                {
                    ChangeGoal();
                }
            }
        }
Exemplo n.º 2
0
 protected virtual void OnFall()
 {
     EnemyRigidBody.AddForce(Vector2.down * 9.8f);
 }