Initial Commit
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Zenject.SpaceFighter
|
||||
{
|
||||
// Responsibilities:
|
||||
// - Interpolate rotation of enemy towards the current desired
|
||||
// direction
|
||||
public class EnemyRotationHandler : IFixedTickable
|
||||
{
|
||||
readonly Settings _settings;
|
||||
readonly EnemyView _view;
|
||||
|
||||
public EnemyRotationHandler(
|
||||
EnemyView view,
|
||||
Settings settings)
|
||||
{
|
||||
_settings = settings;
|
||||
_view = view;
|
||||
}
|
||||
|
||||
public Vector2 DesiredLookDir
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public void FixedTick()
|
||||
{
|
||||
var lookDir = _view.LookDir;
|
||||
|
||||
var error = Vector3.Angle(lookDir, DesiredLookDir);
|
||||
|
||||
if (Vector3.Cross(lookDir, DesiredLookDir).z < 0)
|
||||
{
|
||||
error *= -1;
|
||||
}
|
||||
|
||||
_view.AddTorque(error * _settings.TurnSpeed);
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class Settings
|
||||
{
|
||||
public float TurnSpeed;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user