Edit2: новую проблему смотрите ниже.
Я создаю игру для Windows Phone 7 и столкнулся с некоторыми трудностями.То, что я пытаюсь сделать, это использовать координаты сенсорного экрана, преобразованные в радианы, чтобы запустить объект вверх под углом.Эта часть отлично работает.
Однако я не могу понять, как заставить объект отскочить от боковых стенок.Я работал в более ранней реализации, и это было просто вопросом отрицания значения Y при столкновении со стеной.К сожалению, на этот раз это не так просто.Когда объект ударяется о стену, он отскакивает от стены на короткое расстояние, прежде чем снова изменить направление к стене.
Как я могу структурировать свой код так, чтобы он не попадал в стену?
Спасибо.
//Move bubble
public void MoveBubble(Bubble b, double radians)
{
if (b.stop == false)
{
{
//Move bubble 'up'
Y = (float)(speed * Math.Cos(radians));
X = (float)(speed * Math.Sin(radians));
}
b.bubblePosX += X;
b.bubblePosY += Y;
//Problem area
if(b.bubblePosY <= 0)
Y-=Y;
if(b.bubblePosY >= 350)
Y-=Y;
}
//Calculate Angle
private void CalculateAngle(int touchX, int touchY)
{
radians = (Math.Atan2(touchX - bubbleStart.X, touchY - bubbleStart.Y));
}
Edit2: Просто хотел добавить последний код.Теперь мяч отлично отскакивает от стен, но у меня возникла проблема с инициализацией bool направления.Иногда при стрельбе объекта угол меняется на противоположный.Как установить начальное значение bool на соответствующее значение true / false?
//Move bubble
public void MoveBubble(Bubble bubble, Vector2 distance)
{
if (bubble.stop == false)
{
float velocityX = speed * distance.X;
float velocityY = speed * distance.Y;
bubble.X += velocityX;
if (direction == true)
bubble.Y += velocityY;
if (direction == false)
bubble.Y -= velocityY;
if (bubble.Y <= 0)
direction = !direction;
if (bubble.Y >= 350)
direction = !direction;
}
}