タグ付けされた質問 「mathematics」

数学の問題は、ゲームの開発で使用される算術、幾何学、微積分、公式およびその他の計算を扱います。

2
Time.deltaTimeを使用しているにもかかわらず、動きはフレームレートに依存しているように見える
Unityでゲームオブジェクトを移動するために必要な変換を計算する次のコードがありますLateUpdate。これはで呼び出されます。私が理解していることから、私の使用はTime.deltaTime最終的な翻訳フレームレートを独立させるべきCollisionDetection.Move()です(ただレイキャストを実行することに注意してください)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

1
平面反射を行う際の波の説明
私はSDKからNvidiaの例、特にIsland11プロジェクトを研究してきましたが、波の高さの状態に応じて反射を上下に補正するHLSLコードの一部に興味を持ちました。 当然、コードの短い段落を調べた後: // calculating correction that shifts reflection up/down according to water wave Y position float4 projected_waveheight = mul(float4(input.positionWS.x,input.positionWS.y,input.positionWS.z,1),g_ModelViewProjectionMatrix); float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; projected_waveheight = mul(float4(input.positionWS.x,-0.8,input.positionWS.z,1),g_ModelViewProjectionMatrix); waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; reflection_disturbance.y=max(-0.15,waveheight_correction+reflection_disturbance.y); 私の最初の推測は、垂直の摂動(波)を受けたときに平面反射を補正し、反射ジオメトリを何もない場所にシフトし、水が空または空だけのようにレンダリングされることでした: さて、それは私たちが地形の緑/灰色/黄色がかった反射が水の基線で折り返されるのを見るべき場所を反映している空です。問題は、その背後にあるロジックを正確に特定できないことです。波/水ジオメトリのポイントの実際のワールド空間位置を投影してから-.5fを掛けて、同じポイントの別の投影を取得します。今回はy座標を-0.8に変更します(なぜ-0.8?)。 コード内の手がかりは、冗長性があるため試行錯誤で派生したことを示しているようです。たとえば、著者は投影されたy座標の負の半分(w除算後)を取得します。 float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; そして、2番目のポイントについても同じことを行い(肯定的なだけで、何らかの違いを得るために、私は推測します)、それらを組み合わせます: waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; 2による除算を削除しても、品質の改善に違いは見られません(誰かが私を修正したい場合は行ってください)。それの核心は、投影されたyの違いのようです。なぜですか?この冗長性と-.8fと-0.15fの一見arbitrary意的な選択により、これはヒューリスティック/推測の組み合わせであると結論付けられます。これには論理的な根拠がありますか、それとも単なる必死のハックですか? これは、コードフラグメントが修正する初期問題の誇張です。最低のテッセレーションレベルで観察します。うまくいけば、それは私が見逃しているアイデアを引き起こすかもしれません。-.8fは、平面反射されたジオメトリレンダリングをサンプリングするテクスチャ座標を乱す量を推定する基準高さであり、-。15fはセキュリティ対策である下限です。

4
16進マップで等しい領域を生成する
たとえば、大きな(X x Y)ヘックスマップを使用して、国をシミュレートするために、それを接続されたヘックスのN領域に分割するにはどうすればよいですか? 目標は、形状は異なるがサイズが等しい国を含む現実の地図のように見える16進マップを生成することです。

4
ラインコリジョンで2Dラインを検出する方法
私は数学が少し後戻りしているFlash ActionScriptゲーム開発者ですが、物理学は面白くてクールです。 参考のために、これは私が作っているものと類似したゲームである:Untangledフラッシュゲーム 私はこのもつれのないゲームをほぼ完全に論理的に完成させました。しかし、2本の線が交差する場合、異なる色を表示するために、交差または「もつれた」線が必要です。赤。 線分衝突を検出するためのアルゴリズムを提案できれば、本当に親切な人になります。私は基本的に「算術的」よりも「視覚的に」考えるのが好きな人です:) 編集:アイデアをより明確に伝えるために、いくつかの図を追加したい PS私は次のような関数を作成しようとしています private function isIntersecting(A:Point, B:Point, C:Point, D:Point):Boolean 前もって感謝します。



5
グローバル座標空間からローカル空間に変換するにはどうすればよいですか?
という名前のエンティティが与えられた場合、EntityAローカル座標空間を定義します。ここで、の位置EntityAは原点、その見出しベクトルはX軸、見出しベクトルの法線はY軸です。 グローバル座標が与えられている場合、EntityAのローカル空間で別のエンティティの位置を見つけるにはどうすればよいですか? 例:EntityAのグローバルポジションは(50,50)であり、それEntityBは(80,90)です。では、のローカル空間EntityBでEntityAの位置は何ですか? 編集:数学で簡単に行ってください。

8
2D曲線をデータストレージのポイントに変換する
曲線、つまりパスを最小数のポイントに変換して、ファイルまたはデータベースに保存できるようにするアルゴリズムを作成しました。 この方法は簡単です。3つのポイントを等間隔で移動し、これらのポイントが形成するライン間の角度を測定します。角度が許容値よりも大きい場合、そのポイントまでの新しい3次曲線が作成されます。次に、ラインを前方に移動し、角度を再度測定します… Androidの知っている人のためにパス注こと-クラスdstPathは一方で、私は後でポイントを保存することができますので、配列にポイントを記録したカスタムクラス、あるsrcPathは地域労働組合の結果であり、したがって、私にとって何のキーポイントを持っていません保存する。 問題は、ソースパスが完全な円と長方形で構成されている下のコードで生成されたこの画像でわかるように、円が滑らかに見えないことです。許容角度とステップの長さを変更しようとしましたが、何も役に立ちません。このアルゴリズムの改善、または別のアプローチを提案できるかどうか疑問に思います。 編集:Android Javaを使用している人のためにコード全体を投稿したので、簡単に試してみることができます。 public class CurveSavePointsActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CurveView(this)); } class CurveView extends View{ Path srcPath, dstPath; Paint srcPaint = new Paint(Paint.ANTI_ALIAS_FLAG); Paint dstPaint = new Paint(Paint.ANTI_ALIAS_FLAG); public CurveView(Context context) { super(context); srcPaint.setColor(Color.BLACK); srcPaint.setStyle(Style.STROKE); srcPaint.setStrokeWidth(2); srcPaint.setTextSize(20); dstPaint.setColor(Color.BLUE); dstPaint.setStyle(Style.STROKE); dstPaint.setStrokeWidth(2); dstPaint.setTextSize(20); …

2
競合する3人のヒーローのフォーミュラ。それぞれに1人が負け、もう1人が負けた
私が持っているプロジェクトのゲームを設計しようとしています。主なアイデアは次のとおりです。 3種類のヒーロー 3 ヒーローごとの統計 関係するレベルはありませんので、統計上の違いを見つけなければなりません。 戦いのロジック-戦いのロジックは、type1heroがtype2heroを獲得するチャンスがあり、type2heroがtype3heroを獲得するチャンスがあり、type3heroがtype1heroを獲得するチャンスが高いことです。 1週間以上、私はこれを修正できる統計ベースの式を見つけようとしていますが、私は昨日数字をいじっていましたが、まともでしたが、それから式を抽出することはできません。 ファイトロジックを満たす非lvlゲームで数式の作成を開始する方法を教えてください。

2
ベクトルを使用して現実的な車の動きを作成しようとしています
私はこれを行う方法をゴーグルし、これを見つけましたhttp://www.helixsoft.nl/articles/circle/sincos.htm私はそれをやってみましたが、示された機能のほとんどが機能しませんでした存在しなかったからです cos関数とsin関数を見てきましたが、それらを使用する方法、またはベクトルを使用して車の動きを正しく機能させる方法を理解していません。申し訳ありませんが、コードがありません。 どんな助けも大歓迎です。 編集: ゲームにはTLエンジンを使用しなければならないという制限があり、物理エンジンを追加することはできません。C ++でプログラムする必要があります。ここに、私が提供したリンクで行われたことを追跡しようとすることから得たもののサンプルがあります。 if(myEngine->KeyHeld(Key_W)) { length += carSpeedIncrement; } if(myEngine->KeyHeld(Key_S)) { length -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_A)) { angle -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_D)) { angle += carSpeedIncrement; } carVolocityX = cos(angle); carVolocityZ = cos(angle); car->MoveX(carVolocityX * frameTime); car->MoveZ(carVolocityZ * frameTime);

1
2Dヘリコプターゲーム、廊下の壁を作成する方法は?
私は古典的な「ヘリコプター」ゲーム(つまりhttp://www.addictinggames.com/helicopter.html)の適応を検討していますが、壁生成エンジンの作成方法はまだわかりません。 擬似コードへのポインターはありますか?中間のオブジェクトにはあまり興味がありません。ゲームの進行に伴って難易度が増す(閉じる、予期しない曲線を持つ)方法で側面を生成する方法のみに興味があります。

4
AIエージェントを曲線に沿って移動させるにはどうすればよいですか?
現在、私の非常に基本的なAIフレームワークには、一連のポイントで構成されるギザギザのパスに沿って移動するエージェントがあります。 これは、ある地点から次の地点に位置を移動するだけです。次のポイントに到達すると、次のポイントに向かって移動します。曲線バージョンのパスに沿ってスムーズに移動するようにこれを変更するにはどうすればよいですか?また、曲線を生成するにはどうすればよいですか?

4
キャラクターはどこで止まりますか?
何年も前、私は予算の擬似3Dゲーム用にAIをいくつかコーディングしました。計算方法が1つありましたが、これが最善の方法を実際に理解したことはありませんでした。例えば: 敵は現在X = 540.0にいます。 敵はフレームあたり10ピクセルで右に移動しています。 敵が停止したい場合、速度はゼロに達するまでフレームごとに1ピクセルずつ低下します。 敵が完全に停止したときに敵が終わる位置を取得する簡単な公式はありますか?最終的にはオフセットを事前計算してハードコーディングしましたが、これは私のニーズには合っていましたが、速度の異なる敵に対して個別に計算する必要がありました。

4
GLM:四元数に対するオイラー角
私が問題を抱えているので、GL数学(GLM)を知っていることを望みます、私は破ることができません: オイラー角のセットがあり、それらの間のスムーズな補間を実行する必要があります。最良の方法は、それらをクォータニオンに変換し、SLERPアルゴリズムを適用することです。 私が抱えている問題は、オイラー角でglm :: quaternion を初期化する方法です。 GLMドキュメンテーションを何度も読みましたが、適切なが見つからずQuaternion constructor signature、3つのオイラー角が必要です。私が見つけた最も近いものは 、角度の値とその角度の軸をとるangleAxis()関数です。注意してください、私が探しているのは、方法、解析方法RotX, RotY, RotZです。 参考までに、これは上記のangleAxis() 関数のシグネチャです。 detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

4
さまざまな補間式のアニメーションの例:リンク?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 たとえば、車をスムーズに停止したい場合など、非線形補間曲線とは異なる方程式を含む巨大なページへのリンクを見つけたことを覚えています。 これらは、物理エンジンの助けを借りずに実際の加速/速度の動作をエミュレートするのに役立つ場合があります。 このページの場所は?Googleに適切なキーワードを与えることができません... 編集:以前のラップトップブックマークを検索したところ、http://sol.gfxile.net/interpolation/が見つかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.