17.3. Pourchasser l'avatar
Les premiers états que nous ajouterons sont les états Chase
et Waypoint
.
Chase
Comme nous avons vu, dans cet état le boss pourchasse le joueur de façons similaires au comportement de l'ennemi.
Utiliser la classe State
se fait très facilement, il s'agit de copier le code de l'ennemi à l'intérieur de la méthode update
de la nouvelle classe ChaseState
Étapes à suivre
- ajoutez une la classe
ChaseState
- ajoutez une instance de
ChaseState
à l'intérieur de la méthodeinitStateMachine
du boss
/* ChaseState.java */
package com.tutorialquest.entities.boss;
// import ..
public static class ChaseState extends BossState
{
private float timeLimitChase = 0.5f;
public static final float SPEED = 60f;
public ChaseState(Boss boss, StateMachine stateMachine, int id, float probability, float timeLimit, int timeoutState) {
super(boss, stateMachine, id, probability, timeLimit, timeoutState);
}
@Override
public String getName() {
return "Chase";
}
@Override
public boolean update(float deltaTime) {
if (!super.update(deltaTime)) return false;
// Ne plus pourchasser le joueur lorsque la partie est termine
if(Game.level.avatar == null)
{
boss.locomotionVelocity.setZero();
boss.controlAxes.setZero();
return false;
}
// Déplacement en direction de l'avatar
boss.direction
.set(Game.level.avatar.position)
.sub(boss.position)
.nor();
boss.controlAxes.set(boss.direction);
boss.locomotionVelocity
.set(boss.direction)
.scl(SPEED);
return true;
}
}