2017-01-03 94 views
1

我试图曲线球的运动。此代码直接移动对象并旋转对象,但不会以曲线运动移动。按代码曲线如何使用此代码执行此操作?

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.xballstart.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轴速度,然后计算位置new y的位置。

yVelocity -= g; sprite.y += yVelocity;