Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Игра на юнити (проблема с врагом)

Алёша ред Ученик (112), на голосовании 2 недели назад
наляпал скрипт при котором если враг заходит за его арену обитания то он меняет направление и идет назад и если с другой стороны то также , ну крч патрулирование , и в итоге запускаю и он просто зависает на одной точке где кончается его арена ареала и не разворачивается , помогите и подскажите что не так , я начинающий
вот код:

 using UnityEngine; 
using System.Collections;

class EnemyWalk : MonoBehaviour
{
public GameObject leftBorder;
public GameObject rightBorder;
public Rigidbody2D rigidbody;

public bool isRightDirection;

public float speed;


private void Update() {
if (isRightDirection)
{
rigidbody.velocity = Vector2.right * speed;
if (transform.position.x > rightBorder.transform.position.x)
isRightDirection = !isRightDirection;
}
else
{
rigidbody.velocity = Vector2.left * speed;
if (transform.position.x < rightBorder.transform.position.x)
isRightDirection = !isRightDirection;
}

}




}
Голосование за лучший ответ
Шрэк Зелёный Мастер (1648) 1 месяц назад
Привет! Я вижу, что у вас возникла проблема с патрулированием врага в Unity. Проблема заключается в том, что в вашем коде условие для смены направления проверяется только для `rightBorder`. Вам нужно добавить проверку для `leftBorder` в блоке `else`. Вот исправленный код:


 using UnityEngine; 
using System.Collections;

class EnemyWalk : MonoBehaviour
{
public GameObject leftBorder;
public GameObject rightBorder;
public Rigidbody2D rigidbody;

public bool isRightDirection;

public float speed;

private void Update() {
if (isRightDirection)
{
rigidbody.velocity = Vector2.right * speed;
if (transform.position.x > rightBorder.transform.position.x)
isRightDirection = !isRightDirection;
}
else
{
rigidbody.velocity = Vector2.left * speed;
// Используйте leftBorder здесь, а не rightBorder
if (transform.position.x < leftBorder.transform.position.x)
isRightDirection = !isRightDirection;
}
}
}

Теперь враг должен разворачиваться, достигнув `leftBorder` и `rightBorder`. Удачи с вашим проектом на Unity! Если у вас возникнут еще вопросы, не стесняйтесь спрашивать.
Mr. MillerМастер (1090) 1 месяц назад
Сидит он через gpt-ку отвечает xD (Без осуждения конечно)
Похожие вопросы