public override void Execute(Entity context) { CharacterController controller = context.GetComponent<CharacterController>(); transform = controller.transform; //transform = context.transform; direction = context.GetMedrashPosition() - transform.position; direction.y = 0.0f; tangent.x = clockwise*direction.z; tangent.z = -clockwise*direction.x; tangent.y = 0.0f; if (context.DistanceToMainCharacter() > context.GetCloseRadius()) direction = tangent + 0.01f*(direction.magnitude - context.GetFarRadius()) * direction; else direction = tangent + 0.1f*(direction.magnitude - context.GetFarRadius()) * direction; RaycastHit hitInfo; if (Physics.Raycast(transform.position + controller.center, direction, out hitInfo, 3.0f)) { clockwise *= -1; direction *= -1; } context.SetDirection(direction); context.SetRunAnimation(); }
public override void Execute(Entity context) { transform = context.transform; direction = context.GetMedrashPosition() - transform.position; direction.y = 0.0f; tangent.x = clockwise*direction.z; tangent.z = -clockwise*direction.x; tangent.y = 0.0f; direction = tangent + (direction.magnitude - context.GetFarRadius()) * direction; if (Physics.Raycast(transform.position, direction, context.GetCloseRadius())) clockwise *= -1; context.SetDirection(direction); context.SetRunAnimation(); }