Я создаю очень простой 2D-платформер и создаю суперпростого врага, который определяет, есть ли перед ним стена, и, если она есть, меняет направление. Но когда я запускаю игру, через 1 секунду для 1-го рейкаста враг перестает двигаться.
Я пробовал ОЧЕНЬ разное, думаю это типа 4-я версия скрипта.
private enum Moving
{
MovingToRight,
MovingToLeft,
Idle
}
private void Update()
{
timer += Time.deltaTime;
if (timer > 1f)
{
Debug.Log("Raycast fired!");
raycastHitLeft = Physics2D.Raycast(transform.position, new Vector3(-9, -3.5f, 0), 2);
raycastHitRight = Physics2D.Raycast(transform.position, new Vector3(9, -3.5f, 0), 2);
timer = 0;
}
if (raycastHitRight.collider != null)
{
Debug.Log("Right Raycast Not Hitting Anything, Should Move!");
moving = Moving.MovingToRight;
}
else
{
moving = Moving.Idle;
}
if (raycastHitLeft.collider != null)
{
Debug.Log("Left Raycast Not Hitting Anything, Should Move!");
moving = Moving.MovingToLeft;
}
else
{
moving = Moving.Idle;
}
while (moving == Moving.MovingToRight && moving != Moving.MovingToLeft)
{
transform.position += new Vector3(1, 0, 0) * Time.deltaTime;
return;
}
while (moving == Moving.MovingToLeft && moving != Moving.MovingToRight)
{
transform.position += new Vector3(-1, 0, 0) * Time.deltaTime;
return;
}
while (moving == Moving.MovingToRight && moving == Moving.MovingToLeft)
{
//If both true, move to right
transform.position += new Vector3(1, 0, 0) * Time.deltaTime;
return;
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... ot-working
Скрипт движения влево и вправо не работает ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение