- Home /
Question by
SuperCats14 · Aug 22, 2021 at 03:40 AM ·
enemy ai
Enemy AI Not Working
I used Patch quest's pseudocode to help me create a system that pushes the enemy away from obstacles and pulls the enemy towards the player. However, when I tested the system, the enemy does not push away from the obstacles at all, but still follows the player. I tried making the spring strength higher, but it did not work. Here's the code:
[SerializeField] private Transform player;
[SerializeField] private List<GameObject> obstacles;
[SerializeField] private float speed;
private Vector3 movementIntention = Vector3.zero;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
movementIntention = getMovementIntention();
rb.velocity = movementIntention * speed;
}
private Vector3 getMovementIntention()
{
Vector3 intention = Vector3.zero;
intention = getPlayerMovementIntention(intention);
intention = getObstacleMovementIntention(intention);
if(intention.magnitude < 0.5f)
{
return Vector3.zero;
}
return intention.normalized;
}
private Vector3 getPlayerMovementIntention(Vector3 intention)
{
Vector3 direction = player.position - transform.position;
float distance = Vector3.Distance(player.position, transform.position);
float targetDistance = 0f;
float springStrength = (distance - targetDistance);
intention += direction * springStrength;
return intention;
}
//This is the code that is supposed to push the enemy away from the obstacle
private Vector3 getObstacleMovementIntention(Vector3 intention)
{
foreach (GameObject obstacle in obstacles)
{
Vector3 direction = obstacle.transform.position - transform.position;
float distance = Vector3.Distance(transform.position, obstacle.transform.position);
float springStrength = 1f / (1f + distance * distance * distance);
intention -= direction * springStrength;
print(intention);
}
return intention;
}
Thanks in Advance!
Comment
Your answer
Follow this Question
Related Questions
Enemy turn AI 2 Answers
Enemy behavior help 1 Answer
Teleporting to outside of constraits 0 Answers
FindWithTag always Returning null 3 Answers
Enemy ia fliping when hitting object 2 Answers