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(); } } }
protected virtual void OnFall() { EnemyRigidBody.AddForce(Vector2.down * 9.8f); }