我试图弯曲球的运动。此代码直接移动对象并旋转对象,但它不会以曲线运动方式移动。
if (this.ballstart.hitTestObject(this.back)) {
trace("Hit back");
trace("ballstart rotation: " + this.ballstart.rotation);
removeEventListener(Event.ENTER_FRAME, update);
addEventListener(Event.ENTER_FRAME, BowlingScoreClass);
} else {
trace("move to back");
this.ballstart
this.ballstart.rotation -= -30;
//trace("this ballstart rotation: " + this.ballstart.rotation);
this.ballstart.y = this.ballstart.y - speed;
speed = 15;
/*speed = speed + 0.01;*/
if (this.ballstart.y < -height) {
x = Math.sin(this.ballstart.rotation * (Math.PI / 180)) * speed;
y = Math.cos(this.ballstart.rotation * (Math.PI / 180)) * speed * -1;
this.ballstart.x += x;
this.ballstart.y += y;
}
}
对于非AS3编码器,请理解上述代码在我的项目的显示刷新功能(通过FPS)期间运行。这里.rotation
只是在自己的轴上旋转一个对象。我需要控制ballstart.x
和ballstart.y
来进行曲线运动。
此代码也将以v动作移动,但我希望顺利修复我如何更改它来执行此操作?我需要在顶部代码中弯曲?
if (sprite.y > 500) {
trace(height);
sprite.y -= 4;
sprite.x += 4;
} else if (sprite.y > 400) {
trace(height);
sprite.y -= 4
sprite.x += 2
} else if(sprite.y > this.height) {
sprite.y -= 4
sprite.x -= 2
}
答案 0 :(得分:2)
问题是y轴的速度总是一个常数(+/- 4)所以它总是会创建一条直线而不是一条曲线。
引入重力变量(g),它将改变每帧的y轴速度,然后计算新y位置的位置。
yVelocity -= g;
sprite.y += yVelocity;