public void CloseDistance(float delta) { if (!inRange && aimed) { hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta); } hostAi.AimAt(enemy.Transform.origin); }
public void MaintainDistance(float delta) { if (!inRange && aimed) { // Move up into range hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta); } else if (aimed && currentRange < RangedRange) { // Back up to keep out of melee range hostActor.Move(new Vector3(0, 0, hostActor.GetMovementSpeed()), delta); } hostAi.AimAt(enemy.Transform.origin); }
public void Pursue(float delta) { Vector3 pos = hostActor.Translation; Vector3 potentialPos = hostActor.Pointer(1f); Vector3 targetPos = enemy.Translation; hostAi.AimAt(targetPos); float currentDist = pos.DistanceTo(targetPos); float potentialDist = potentialPos.DistanceTo(targetPos); if (currentDist > potentialDist) { hostActor.Move(new Vector3(0, 0, -hostActor.GetMovementSpeed()), delta); } }