Implemented new AI behavior patterns #1

Open
ScarletRedMan wants to merge 17 commits from feat/ai into master
2 changed files with 8 additions and 1 deletions
Showing only changes of commit 7c9495429f - Show all commits

View File

@ -130,7 +130,13 @@ public class AI {
if (nextTarget == null) nextTarget = destinationData.position(); if (nextTarget == null) nextTarget = destinationData.position();
boolean nextIsRePath = nextTarget.sameBlock(Pos.ZERO); boolean nextIsRePath = nextTarget.sameBlock(Pos.ZERO);
var prevPos = entity.getPosition();
nodeFollower.moveTowards(currentTarget, nodeFollower.movementSpeed(), nextIsRePath ? currentTarget : nextTarget); nodeFollower.moveTowards(currentTarget, nodeFollower.movementSpeed(), nextIsRePath ? currentTarget : nextTarget);
var delta = entity.getPosition().sub(prevPos);
if (delta.isZero()) {
nodeFollower.jump(currentTarget, nextTarget);
}
// TODO: исправить баг, в данном месте, когда Entity не движется вообще. Сделать хорошую проверку на застревание // TODO: исправить баг, в данном месте, когда Entity не движется вообще. Сделать хорошую проверку на застревание
// TODO: присутствует баг, что если как-то помешать Entity следовать до точки, например поставить перед ним блок, то он перестанет идти // TODO: присутствует баг, что если как-то помешать Entity следовать до точки, например поставить перед ним блок, то он перестанет идти
// TODO: хождение по неполноценным блокам - огромная проблема. Entity попросту застревает в них // TODO: хождение по неполноценным блокам - огромная проблема. Entity попросту застревает в них

View File

@ -52,7 +52,8 @@ public class GroundNodeFollower implements NodeFollower {
@Override @Override
public boolean isAtPoint(Point point) { public boolean isAtPoint(Point point) {
return entity.getPosition().distanceSquared(point) < 0.5 * 0.5; var d = entity.getPosition().sub(point);
return d.x() * d.x() + d.z() * d.z() < 0.5 * 0.5;
} }
public void jump(float height) { public void jump(float height) {