59 lines
1.4 KiB
C#
59 lines
1.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using Random = UnityEngine.Random;
|
|
|
|
namespace Zenject.SpaceFighter
|
|
{
|
|
public class EnemyStateIdle : IEnemyState
|
|
{
|
|
readonly EnemyRotationHandler _rotationHandler;
|
|
readonly Settings _settings;
|
|
readonly EnemyView _view;
|
|
|
|
Vector3 _startPos;
|
|
float _theta;
|
|
Vector3 _startLookDir;
|
|
|
|
public EnemyStateIdle(
|
|
EnemyView view, Settings settings,
|
|
EnemyRotationHandler rotationHandler)
|
|
{
|
|
_rotationHandler = rotationHandler;
|
|
_settings = settings;
|
|
_view = view;
|
|
}
|
|
|
|
public void EnterState()
|
|
{
|
|
_startPos = _view.Position;
|
|
_theta = Random.Range(0, 2.0f * Mathf.PI);
|
|
_startLookDir = _view.LookDir;
|
|
}
|
|
|
|
public void ExitState()
|
|
{
|
|
}
|
|
|
|
// Just add a bit of subtle movement
|
|
public void Update()
|
|
{
|
|
_theta += Time.deltaTime * _settings.Frequency;
|
|
|
|
_view.Position = _startPos + _view.RightDir * _settings.Amplitude * Mathf.Sin(_theta);
|
|
|
|
_rotationHandler.DesiredLookDir = _startLookDir;
|
|
}
|
|
|
|
public void FixedUpdate()
|
|
{
|
|
}
|
|
|
|
[Serializable]
|
|
public class Settings
|
|
{
|
|
public float Amplitude;
|
|
public float Frequency;
|
|
}
|
|
}
|
|
}
|