2017-01-03 93 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;