书中第十章的“线下”问题,并没有修正,小球从底部反弹至line的时候,仍然会穿过line到上面去,而不是反弹,将bounce参数调成-1就可以看得很明白了。
更改:如y2的绝对值小于小球半径,则进行反弹,如果y2的值为正则将小球重置到到线下,如为负则重置到线上
if(Math.abs(y2) < ball.height / 2)
{
// rotate coordinates
var x2:Number = cos * x1 + sin * y1;
// rotate velocity
var vx1:Number = cos * ball.vx + sin * ball.vy;
if(y2 > 0) {
y2 = ball.height / 2;
}
else {
y2 = -ball.height / 2;
}
vy1 *= bounce;
// rotate everything back;
x1 = cos * x2 - sin * y2;
y1 = cos * y2 + sin * x2;
ball.vx = cos * vx1 - sin * vy1;
ball.vy = cos * vy1 + sin * vx1;
ball.x = line.x + x1;
ball.y = line.y + y1;
}
本文由作者笔名:小小评论家 于 2023-03-26 16:52:55发表在本站,文章来源于网络,内容仅供娱乐参考,不能盲信。
本文链接: http://www.w2mh.com/show/63472.html