Я работаю над этим методом, который касается обнаружения столкновений.У меня возникла проблема с инициализацией bool.Иногда при стрельбе объекта угол меняется на противоположный, потому что он ожидает, что bool будет ложным.
Если объект изначально направлен влево (от 0 до 350 в моем коде), значение bool должно быть истинным.Если он направлен вправо (между 350 и 700), значение bool должно быть ложным.
Как установить начальное значение bool на соответствующее значение true / false, не мешая последующему обнаружению столкновений?
Я думаю, что проблема в том, что когда я пытаюсь проверить, какое направление следует установить, затем я случайно налагаю ограничения на объекты.Я не могу понять, как разделить их.В идеале проверка между 0 и 350 и проверка между 350 и 700 должна выполняться только один раз, но они проверяются при каждом вызове метода, и это вызывает проблему.
//Move bubble
public void MoveBubble(Bubble bubble, Vector2 distance)
{
if (bubble.stop == false)
{
velocityX = speed * distance.X;
velocityY = speed * distance.Y;
bubble.X += velocityX;
//Problem section
if (bubble.Y > 0 && bubble.Y < 350)
direction = true;
if (bubble.Y > 350 && bubble.Y < 700)
direction = false;
//End Problem section
if (direction == true)
bubble.Y += velocityY;
if (direction == false)
bubble.Y -= velocityY;
if (bubble.Y <= 0 || bubble.Y >= 350)
direction = !direction;
}
}
Исправлен код:
//Move bubble and reverse it's velocity if it collides with a wall
internal void MoveBubble(Bubble bubble, Vector2 distance)
{
if (bubble.stopped == false)
if (bubble.Y < 0 || bubble.Y > 350)
bubble.velocityY = -bubble.velocityY;
bubble.Y += bubble.velocityY;
bubble.X += bubble.velocityX;
}