2

私が取り組んでいるフラッシュ ゲーム プロジェクトでは、レイキャスティングによってプレイヤーを検出できるカメラを作成したいと考えています。カメラはさまざまな視野角 (例: 45 度または 90 度) を持つことができ、これらの視野角に応じてレイキャスティングが変化する必要があります。レイキャスティングを使用して実際の視野角を作成しても問題はありませんが、何らかの理由でこれらの視野角が配置される角度が間違っています。

これは私が使用するコードです:

for (var i:Number = 0; i < this._viewAngle; i++)
{
    var pointX:Number = (this._viewRange) * Math.cos(this._viewAngle + (i * Math.PI / 180));
    var pointY:Number = (this._viewRange) * Math.sin(this._viewAngle + (i * Math.PI / 180));
    this._rayHolder.graphics.lineTo(pointX, pointY);
    this._rayHolder.graphics.moveTo(0, 0);
}

これが結果です:
(90 度)

カメラ 90 度

(45度)

カメラ 45 度

もっと明確に説明する方法がわからないので、私が書いたことが十分に理解できることを願っています。

編集:これに
変更Math.cos(this._viewAngle + (i * Math.PI / 180));するとMath.cos((this._viewAngle + i) * Math.PI / 180);:

(90度)

カメラ 90 度

(45度)

ここに画像の説明を入力

4

1 に答える 1

4

私はあなたの更新に近づいていると思います。Sunil D が指摘しているように、おそらく、垂直から 90 度を中心に視野円錐を合わせたいだけでしょう。つまり、次から開始し-_viewAngle * 0.5ます。

for (var i:Number = 0; i < this._viewAngle; i++)
{
    var pointX:Number = (this._viewRange) * Math.cos((-this._viewAngle * 0.5 + i) * Math.PI / 180);
    var pointY:Number = (this._viewRange) * Math.sin((-this._viewAngle * 0.5 + i) * Math.PI / 180);
    this._rayHolder.graphics.lineTo(pointX, pointY);
    this._rayHolder.graphics.moveTo(0, 0);
}

編集:これらの方程式はこのアプリケーションで機能しますが、以下は Flash の奇数座標系をより正確に反映しています。具体的には、右に正の x 、下に正の y を使用します。

for (var i:Number = 0; i < this._viewAngle; i++)
{
    var pointX:Number = (this._viewRange) * Math.sin((90 - this._viewAngle * 0.5 + i) * Math.PI / 180);
    var pointY:Number = (this._viewRange) * -Math.cos((90 - this._viewAngle * 0.5 + i) * Math.PI / 180);
    graphics.lineTo(pointX + 100, pointY + 100);
    graphics.moveTo(100, 100);
}
于 2013-06-29T20:15:59.910 に答える