【发布时间】:2011-05-03 19:15:04
【问题描述】:
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 初始化为 true 的问题。有时,当发射物体时,角度是相反的。如何将初始布尔值设置为适当的真/假值?
//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;
}
}
【问题讨论】:
标签: c# visual-studio-2010 windows-phone-7 xna