这个学期学XNA,老师给布置一个小的2D游戏。所以就选择了气垫球(Air Hockey)的游戏,并且是可以相互对战的。这里想讨论的是一个求固定不动的,另一个在运动的
然后这个游戏逻辑的关键就是:碰撞,碰撞以后小球的运动路径(速度)。(暂时先没考虑到摩擦)
碰撞:这里要讲得就是像素检测碰撞,并不是图像或者说是Rectangle的碰撞,用像素检测实现的碰撞更为真实,这里我用到的方法是判断2图交集的alpha值是不是等于0.如果是则碰撞,反之,则无碰撞。参考blog:http://www.dotblogs.com.tw/sonic10690/archive/2008/12/29/6564.aspx
碰撞以后的速度:(画的比较栏,请谅解)。大的圆是不动的,小圆撞击,v1是小圆初始速度,v2是撞击后速度,中间那条是俩圆中心点连接(后面也称之法向量f)。v1是已知的,f也可以求出(碰撞时两者中心相连),现在就要求v2。
具体步骤:
向量V1(x1,y1),一个法向量F1(x2,y2)
将程式带入XNA代码中,发现游戏的状况是符合逻辑的。
PS:感叹一下,数学没学好,花了大半天时间自己在研究。后来百度提了个问,感谢laoye20011
http://zhidao.baidu.com/question/350552407.html