Files
dungeons/Assets/Plugins/Zenject/OptionalExtras/SampleGame2 (Advanced)/Scripts/Enemy/EnemyRotationHandler.cs

48 lines
1022 B
C#

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;
}
}
}