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

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