Unity Platform 14 Enermy with StateMachine
===
2020.08.25
###### tags: `platform`
## List
1. [Enermy Script](#ES)
2. [Each Staet](#ES2)
## Content
### Enermy Script<a id="ES"/>
Main Script is `Enemry(E1)` inheritatied Entity.<br>Each states made by.
```csharp=
public class E1 : Entity
{
public E1_IdleState idleState { get; private set; }
public E1_MoveState moveState { get; private set; }
[SerializeField]
private D_IdleState idleStateData;
[SerializeField]
private D_MoveState moveStateData;
public override void Start()
{
base.Start();
moveState = new E1_MoveState(this, stateMachine, "move", moveStateData, this);
idleState = new E1_IdleState(this, stateMachine, "idle", idleStateData, this);
stateMachine.initialize(moveState);
}
}
```
### Each State<a id="ES2"/>
**Move State**
```csharp=
public class E1_MoveState : MoveState
{
private E1 enermy;
public E1_MoveState(Entity entity, FiniteStateMachine stateMachine, string animBoolName, D_MoveState stateData, E1 enermy) : base(entity, stateMachine, animBoolName, stateData)
{
this.enermy = enermy;
}
public override void Enter()
{
base.Enter();
}
public override void Exit()
{
base.Exit();
}
public override void LogicUpdate()
{
base.LogicUpdate();
if (isDetectingWall || !isDetectingLedge)
{
enermy.idleState.SetFlipAfterIdle(true);
stateMachine.ChangeState(enermy.idleState);
}
}
public override void PhysicsUpdate()
{
base.PhysicsUpdate();
}
}
```
**Idle State**
```csharp=
public class E1_IdleState : IdleState
{
private E1 enermy;
public E1_IdleState(Entity entity, FiniteStateMachine stateMachine, string animBoolName, D_IdleState stateData, E1 enermy) : base(entity, stateMachine, animBoolName, stateData)
{
this.enermy = enermy;
}
public override void Enter()
{
base.Enter();
}
public override void Exit()
{
base.Exit();
}
public override void LogicUpdate()
{
base.LogicUpdate();
if (isIdleTimeOver)
{
stateMachine.ChangeState(enermy.moveState);
}
}
public override void PhysicsUpdate()
{
base.PhysicsUpdate();
}
}
```