私は飛行する矢印のシミュレーションをしていますが、それはとても自然に見えません。ここで 矢印の軌跡
はスクリーンショットです:矢印ムービークリップのアンカーは、あなたが見ることができるように、矢印の前面にあるが、私は真ん中にそれを交換する場合、それはまだ見ていません完璧な、誰かがこのような何かの経験を持っていますか?
は、ここでも私のコードです:
//...
//'math' isn't the default 'Math' class, it calculates some physics stuff.
private function updateArrow()
{
var y0:Number = 50;
var v:Number = 100;
var angle:Number = math.getRadians(45);
if(!arrowstartposition)
{
arrowstartposition = activearrow.x;
arrowdistance = math.calcDistance(y0,v,angle);
}
var currentdistance:Number = Math.abs(activearrow.x - arrowstart);
if(currentdistance <= arrowdistance)
{
var currentvelocity:Number = math.calcVelocity(currentdistance, v, angle);
var addvalue:int = 1; //Math.round(currentvelocity/4);
activearrow.x += addvalue;
currentdistance += addvalue;
var arrowheight:Number = math.calcHeight(currentdistance,y0,v,angle);
var vx:Number = v * Math.cos(angle);
var vy:Number = - (v * Math.sin(angle) - 9.81 * (currentdistance/arrowdistance) * math.calcTimeOfFlight(y0, v, angle));
var currentangle:Number = Math.atan2(vy,vx);
activearrow.y = y0 - arrowheight;
activearrow.rotation = math.getDegrees(currentangle);
}
else
{
arrowstart = undefined;
arrowdistance = undefined;
activearrow = null;
}
}
1つの問題は、軌跡があまりにも放物線であることです。正しい軌跡は、矢印の各部分のベクトルを使用することによってよりよくモデル化されます。ヘッドと硬材は重力と風の抵抗が少なく、シャフトの効果はほとんど無視でき、フレッチングはいくらかのリフトを経験します。したがって、9.81に基づく単純な放物線は、それを正しくモデル化しません。また、速度の連続的な関数であるドラッグがあります。 – drharris
@drharrisしかし、最も物理的に正確ではないとしても、完全な放物線であれば、曲線の形状は最も自然に見えます。 – corsiKa
真実ですが、彼はシミュレーションをしていると主張しました。シミュレーションでは通常、精度が効果以上になります。 – drharris