我正在尝试编制一个在空中飞行的箭,但速度看起来不太好。
但是现在箭头移动的速度很慢,这是一个 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 :(得分:0)
当然,您需要为initvelocity指定一个更大的值,直到找到您认为合适的速度?
编辑:
没有什么可以将你的距离和绝对位置与物理世界中的任何东西联系起来。实际上很少以“每秒像素数”来衡量。你的陈述currentvy -= 9.81 / stage.frameRate;
,如果我理解闪光灯是如何工作的(它已经有一段时间了),有效地将垂直减速设置为每秒9.81 像素(不是米),这是可以理解的慢。或者,如果你认为你的计算有效地缩放到1像素= 1米,速度不一定是不合理的,但你确实有一个非常大的弓箭!
你只需要应用一些比例来近似“合理”的东西。说实话,没有真正的科学。