Not perfect but enemies move/attack with animation

This commit is contained in:
2024-09-15 23:56:05 -07:00
parent 4a1fdd94f8
commit 8143da44db
36 changed files with 891 additions and 507 deletions

View File

@@ -12,29 +12,17 @@ namespace GameJamDungeon
{
public Transition On(in Input.PhysicsTick input)
{
//var delta = input.Delta;
//var gameRepo = Get<IGameRepo>();
//var enemy = Get<IEnemy>();
var delta = input.Delta;
var enemy = Get<IEnemy>();
var gameRepo = Get<IGameRepo>();
var target = gameRepo.PlayerGlobalPosition.Value;
enemy.NavAgent.TargetPosition = target;
var targetPosition = enemy.NavAgent.GetNextPathPosition();
//if (enemy.GlobalPosition.DistanceTo(gameRepo.PlayerGlobalPosition.Value) <= 2.5f)
//{
// //enemy.LookAt(-new Vector3(gameRepo.PlayerGlobalPosition.Value.X, enemy.GlobalPosition.Y, gameRepo.PlayerGlobalPosition.Value.Z), Vector3.Back);
// return ToSelf();
//}
//if (enemy.GlobalPosition.DistanceTo(gameRepo.PlayerGlobalPosition.Value) > 20f)
// return To<Idle>();
//enemy.NavAgent.TargetPosition = gameRepo.PlayerGlobalPosition.Value;
//var nextPosition = enemy.NavAgent.GetNextPathPosition();
//var lookAtPos = enemy.NavAgent.GetNextPathPosition();
////enemy.LookAt(-new Vector3(lookAtPos.X, enemy.GlobalPosition.Y, lookAtPos.Z), Vector3.Back);
//var direction = enemy.NavAgent.GetNextPathPosition() - enemy.GlobalPosition;
//enemy.Velocity = enemy.Velocity.MoveToward(direction.Normalized() * 0.01f, (float)delta);
//Output(new Output.MovementComputed(enemy.Velocity));
enemy.Velocity = (targetPosition - enemy.GlobalTransform.Origin).Normalized() * 2f;
enemy.Rotation = new Vector3(0, (float)Mathf.LerpAngle(enemy.Rotation.Y, Mathf.Atan2(enemy.Velocity.X, enemy.Velocity.Z), delta * 10.0), 0);
Output(new Output.MovementComputed());
return ToSelf();
}