2012-01-08 84 views
0

我試圖編程一個箭在空中飛翔,但速度看起來不太好。箭頭的速度

但現在箭頭移動得很慢,這裏是一個 sample

(我知道的箭頭和軌跡不匹配100%,它只是一個樣本。)

//... 

var inity0:Number = 50; 
var initangle:Number = - Math.PI/4; 
var initvelocity:Number = 100; 
var initvx:Number = initvelocity * Math.cos(initangle); 
var initvy:Number = initvelocity * Math.sin(initangle); 
var currentvx:Number = new Number(initvx); 
var currentvy:Number = new Number(initvy); 
var initdistance:Number = math.calcDistance(inity0,initvelocity,initangle); 

currentvy -= 9.81/stage.frameRate; 
activearrow.x += currentvx/stage.frameRate; 
activearrow.y -= currentvy/stage.frameRate; 

//... 

任何想法?

編輯: 我已經改變了下面的代碼:

currentvy -= 9.81/stage.frameRate * 15; 
activearrow.x += currentvx/stage.frameRate * 15; 
activearrow.y -= currentvy/stage.frameRate * 15; 

現在它看起來不錯,但誰能告訴我爲什麼我需要這樣做,而在物理學上,通常會飛到15倍太快?

+0

你好。我試圖做那樣的投影曲線。我可以有你的源代碼嗎?只是曲線的一個。 – Fabricio 2012-01-08 17:35:56

回答

0

當然,您只需要爲initvelocity指定一個更大的值,直到找到您認爲合適的速度爲止?

編輯:

沒什麼可涉及您的距離和絕對位置在物理世界中任何事情。實際上很少以'像素每秒'來衡量。您的陳述currentvy -= 9.81/stage.frameRate;,如果我瞭解閃光燈如何工作(這也是一段時間),則可以將垂直減速度有效設置爲9.81,像素爲每秒平方(而不是米),這是可以理解的緩慢。另外,如果你認爲你的計算在1像素= 1米的範圍內有效縮放,速度並不一定是不合理的,但你確實有一個令人難以置信的大弓箭!

你只需要應用一些比例來近似「合理」的東西。沒有真正的科學,說實話。

+0

如果我改變速度,它會飛得更遠,我會有一個更大的「拋物線」,因爲距離與當然速度有關...(您可以通過將鼠標遠離箭頭在我的示例文件中。) – 2012-01-08 15:49:44

+0

啊,是的;現在它回到了我的身邊。距離我上次看彈道學已有近30年了! – 2012-01-08 16:24:48