From d3197547d0226a016cfd561b583b830772f7b3b1 Mon Sep 17 00:00:00 2001 From: austin Date: Sat, 27 Nov 2021 18:25:06 -0500 Subject: [PATCH] Small ai fixes --- .../entity/state/movement/GroundMovementTree.java | 2 +- .../server/ai/creature/OpportunisticAttacker.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java b/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java index 184eef9b..ae734ac9 100644 --- a/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java +++ b/src/main/java/electrosphere/entity/state/movement/GroundMovementTree.java @@ -101,7 +101,7 @@ public class GroundMovementTree { Vector3d position = EntityUtils.getPosition(parent); Vector3d movementVector = CreatureUtils.getMovementVector(parent); // float movementYaw = CameraEntityUtils.getCameraYaw(Globals.playerCamera); - Quaternionf movementQuaternion = new Quaternionf().rotationTo(new Vector3f(0,0,1), new Vector3f((float)movementVector.x,(float)movementVector.y,(float)movementVector.z)).normalize(); + Quaternionf movementQuaternion = new Quaternionf().rotationTo(new Vector3f(0,0,1), new Vector3f((float)movementVector.x,0,(float)movementVector.z)).normalize(); Quaternionf rotation = EntityUtils.getRotation(parent); //parse attached network messages diff --git a/src/main/java/electrosphere/game/server/ai/creature/OpportunisticAttacker.java b/src/main/java/electrosphere/game/server/ai/creature/OpportunisticAttacker.java index f7e8d8fc..788d202a 100644 --- a/src/main/java/electrosphere/game/server/ai/creature/OpportunisticAttacker.java +++ b/src/main/java/electrosphere/game/server/ai/creature/OpportunisticAttacker.java @@ -10,6 +10,10 @@ import electrosphere.entity.types.creature.CreatureUtils; import electrosphere.entity.types.item.ItemUtils; import electrosphere.game.server.ai.AI; import electrosphere.main.Globals; + +import org.joml.Vector3f; + +import org.joml.Quaternionf; import org.joml.Vector3d; /** @@ -60,6 +64,7 @@ public class OpportunisticAttacker extends AI { if(target != null){ if(inAttackRange()){ if(hasWeapon()){ + faceTarget(); attack(); } else { if(weaponInRange()){ @@ -71,6 +76,7 @@ public class OpportunisticAttacker extends AI { } else { if(inAggroRange()){ if(hasWeapon()){ + faceTarget(); moveToTarget(); } else { if(weaponInRange()){ @@ -243,6 +249,15 @@ public class OpportunisticAttacker extends AI { } } + void faceTarget(){ + Vector3d position = EntityUtils.getPosition(character); + Vector3d targetPosition = EntityUtils.getPosition(target); + Vector3d movementVector = new Vector3d(targetPosition).sub(position).normalize(); + Quaternionf movementQuaternion = new Quaternionf().rotationTo(new Vector3f(0,0,1), new Vector3f((float)movementVector.x,0,(float)movementVector.z)).normalize(); + CreatureUtils.setMovementVector(character, movementVector); + EntityUtils.getRotation(character).set(movementQuaternion); + } + void setGoal(OpportunisticAttackerGoal goal){ this.goal = goal; switch(goal){