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

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

4
減速を実装するにはどうすればよいですか?
現時点では加速を使用していないため、「減速」と言います。つまり、速度をゼロに戻し、最終的に停止します。 私はベクトルが初めてなので、物理学などはあまり得意ではありません。「減速」は通常どのように処理されますか? 私が今持っているものは動作しますが、一種のハックのようです。 update:function(Game, t, dt) { var speed = Game.Input.isKeyDown('shift') ? 8 : 4; if (Game.Input.isKeyDown('a')) { this.velocity.i -= speed; } else if (Game.Input.isKeyDown('d')) { this.velocity.i += speed; } else { if (Math.abs(this.velocity.i) > 3) { this.velocity.i += (this.velocity.i > 0) ? -speed : speed; } else { this.velocity.i …

2
2D Vectorクラスのフロート、ダブル、または両方?
私は現在、スタジオ用の小さなクロスプラットフォームのOpenGLベースの2Dゲームエンジンを書いています。使用する2D Vectorクラスを調査したとき、3つの異なる設計パラダイムに出くわしました。 このガマスートラの記事のように、フロート&値渡し。高速に見えますが、精度はほとんどありません(このThreadも参照してください)。プロ:高速でポータブルで、ほとんどのライブラリと互換性があります。 参照による二重呼び出し。上記の記事を正しく理解していれば、4つの浮動小数点数の代わりに2つの倍精度変数を使用することもできます。上記のスレッドによると、ダブルはフロートよりも遅いです。 doubleとfloatのテンプレート:広く普及している本「Game Engine Architecture」では、テンプレートを使用して、必要に応じてfloatとdoubleを使用できるようにしています。明らかな欠点は、コードの膨張です。また、基本的に2つのクラスを記述せずにコードを最適化できるかどうかは疑問です。 社内エンジンで使用しているソリューションや、人気のあるゲームエンジンなどの精度を確認していただければ、エンジンに実装するソリューションを決定できます。現時点では、単純に浮動小数点精度を使用してそれと共存することを考えています。

2
プレーヤーを地形に対してスムーズにスライドさせる方法
等尺性のゲームを作っています。プレイヤーが斜めに壁の中を歩こうとするとき、スムーズに壁を横切って滑らせたいので、動きのどの部分でも合法であり、法線の方向のすべてが捨てられます。壁は垂直または水平だけでなく、任意の角度にすることができ、プレーヤーは360度の動きをします。 もうすぐそこにいるような気がしますが、最後のピースを置くことができません。 更新:みんな良いニュースです!私はそれを働いています。しかし...私は正規化すべきこととそうでないことを少し混乱しています。法線は単位ベクトルである必要がありますよね?しかし、それを私の入力と混合しているので、それを正規化しています-私は間違っていますか? ちなみに、プレイヤーが通常の方向に1ピクセル押す必要があることもわかりました。これにより、プレイヤーが物に引っ掛からないようになり、うまく機能します。

1
サークルライン衝突検出問題
私は現在ブレイクアウトクローンを開発しており、ボール(円)とレンガ(凸多角形)の間の衝突検出が正しく機能するようにするための障害にぶつかっています。私は、各線が凸多角形ブリックのエッジとエッジを表すサークルライン衝突検出テストを使用しています。 ほとんどの場合、Circle-Lineテストは適切に機能し、衝突点は正しく解決されます。 衝突検出は正しく機能しています。 ただし、ボールが実際にレンガと交差しているときに、負の判別式が原因で衝突検出コードがfalseを返す場合があります。 衝突検出に失敗しました。 私はこの方法の非効率性を認識しており、軸合わせの境界ボックスを使用して、テストされたレンガの数を削減しています。私の主な懸念は、以下のコードに数学的なバグがあるかどうかです。 /* * from and to are points at the start and end of the convex polygons edge. * This function is called for every edge in the convex polygon until a * collision is detected. */ bool circleLineCollision(Vec2f from, Vec2f to) { Vec2f lFrom, …

2
移動するターゲットに当たるショットの角度と速度を計算する方法は?
私は2D Androidゲームを開発しており、AIの発射物がパスをたどって、または自由に移動して敵を攻撃するための照準アルゴリズムを作成しています。現時点では、ある距離の後にターゲットがどこに位置するかを計算し、その距離でそれを満たすために発射体を発射します。もちろん、これは、目標を満たすために発射速度を変化させることを意味します。 発射体がいつ発射する必要があるか、一定速度でのみ移動できる場合はどこを狙う必要があるかを計算するためのシンプルなアルゴリズム(最適なアルゴリズム)のヒントはありますか?発射体がターゲットの2倍の速度で移動するとしますか? 私が考えることができる唯一の方法は検索を伴うもので、かなり大きいようです。
11 2d  android  mathematics  ai  aiming 

3
ビューマトリックスから翻訳を取得する方法
ビューマトリックスからカメラのワールド空間の位置を取得するにはどうすればよいですか?この質問に対して私が見た唯一の回答は、翻訳が最後の行/列にあることを示唆していますが、マトリックスには[x(ドット)右、y(ドット)上、z(ドット)見た目]が含まれているため、これは機能しません。
11 3d  mathematics  matrix 

3
起動角度以外のすべてを与えられた場合、ターゲットでGameObjectを起動するにはどうすればよいですか?
位置、目標位置、発射速度、重力を考慮して、目標で物体を発射しようとしています。私はウィキペディアからこの式に従っています: θ = a r c t a n (v2±v4− g(gバツ2+ 2 Yv2)−−−−−−−−−−−−−−−√gバツ)θ=arctaん(v2±v4−g(gバツ2+2yv2)gバツ) \theta = arctan \bigg( \frac{v^2 \pm \sqrt{v^4-g(gx^2 + 2yv^2)}}{gx} \bigg) 私はできる限りコードを簡略化しましたが、それでも目標を達成することができません。計算式の+-の選択肢から利用できる2つのうち、より長い軌道のみを考慮しています。 誰かが私が間違っていることを知っていますか? using UnityEngine; public class Launcher : MonoBehaviour { public float speed = 10.0f; void Start() { Launch(GameObject.Find("Target").transform); } public void Launch(Transform target) { float angle …

3
テラス山の特徴
数日前にポートフォリオ/ブログサイトで見つけた手続き型地形効果を再現したいと思っています。 このサイトを引用すると、「[最終的な高さ]に特定の高さの範囲内の減衰値を掛けて、美しい峡谷の特徴を作成する」ことによって、テラスが生成されました。 誰かがこれについてより技術的な例や手順を提供できると思いましたか?過去1週間にわたって、私は手続き型の地形/テクスチャの方法と実践について多くのことを研究および学習してきましたが、「クランプ」とは何かを詳細に説明するものにまだ出くわしておらず、イライラし始めています。

3
RPGは線形損傷の公式をどのように調整しますか?
RPGのダメージ計算式を開発しています。私は参考のために多くの人気のあるタイトル式(ファイナルファンタジー、クロノトリガー、ゴールデンサン、キャッスルバニア)を確認しましたが、ほとんどが線形関数を使用しているようです。 私の問題は、線形関数の場合、レベルアップするとダメージが増加する%がすべてのレベルで低下することです。たとえば、Lvl 2からLvl 3に移動し、ダメージが50%増加した場合、Lvl 50からLvl 51に移動すると、同じ敵に対する攻撃のダメージは0.5%増加します。 これと相まって、レベルアップするXPがこれらのタイトルで指数関数的に上がるという事実は私には意味がありません。私のゲームではこのタイプの機能を忘れたくなりますが、お気に入りのゲームの多くがそれらを使用しているため、見逃してはならないものがあると感じています。さらに、私はこれらのタイトルをプレイしましたが、これに気づくことはありませんでした。 例:黄金の太陽のダメージ計算は簡単です:ダメージ=攻撃-防御。以下のポケモンのダメージ計算式はもう少し複雑ですが、絶対ダメージの増加も各レベルで減少します。 これらのゲームで、各レベルのダメージの増加率を低くすることを考えてもいいですか? どのようにしてゲームのバランスを取り、レベルがゲームの後半でも重要になるようにしますか?

2
3人称カメラをターゲットに向けて回転させる
私はプレーヤーを直接見ない3人称カメラを持っていますが、彼の前のどこかにあります。 ユーザーが撮影モードに入ると、カメラがプレイヤーを振り向いてターゲットに向かいます。 上の画像。「O」はプレーヤー(原点)、「L」はルックアット、「C」はカメラの位置、「T」はターゲットです。ルックアットラインC-> Lを回転させて、原点( "O")を中心にT(C '-> L'-> T ')を通過するようにします。 基本的には、画像に赤で表示した角度アルファを見つける必要があります。 私はカメラの位置をそのような構造に保存します: struct CameraTarget { Quaternion absoluteRotation; Vec3 absolutePosition; Vec3 cameraOffset; Vec3 lookatOffset; float FOV; } だから私が探している角度を見つけることができれば私は次のようなことをすることができます: cam->absoluteRotation = cam->absoluteRotation * alpha; プレイヤーに常にターゲットを見させる。 LookatがOriginを通り過ぎていた場合、私は簡単にできます Vec3 origDir = cam->lookAtOffset - cam->absolutePosition; origDir.normalize(); Vec3 newDir = cam->target - cam->absolutePosition; newDir.normalize(); Quaternion q(origDir, newDir); …

3
AからBにジャンプできますか?
横スクロール用の基本的なAIを作成しています。ジャンプを実行するだけで、AIユニットがポイントAからポイントBに到達できるかどうかを知る必要があります。 私の文字の飛行軌道はとても古典とは異なり、彼らは(例えばジャズJackrabbitの2のように)空中に力を加えることができるように、ビットunusalで発射の弾道についてです... 投射または発射された発射体が推進力なしに進む経路(...) ...私の問題は、推進力を備えた発射体(ロケットなど)に関するものだと思います。 これを説明するために、ジャンプして「左ボタン」を押し続けると、これは私のキャラクターの飛行曲線のようになります(左端では異なります。空中でマニューバを作成していた場所です)。 飛行中に加えられる力は常にX軸に平行であるため、「左」を押し続けるとF =(-f、0)、「右」を押し続けるとF =(f、0)になります。 彼はスキージャンパーのように非常に動くことができます: したがって、それは単に放物線である古典的な軌道とは大きく異なります(出典:ウィキペディア)。 さらに難しくするために、単純な空気抵抗をシミュレートしているので、キャラクターはある最大速度値までしか加速できません。 これは、反対の移動方向に小さな力を加えることによって行われます。 b2Vec2 vel = body->GetLinearVelocity(); float speed = vel.Normalize(); //normalizes vector and returns length body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() ); AIR_RESISTANCE_MULTは定数で、私の場合は0.1です。 私の性格は無限に小さいと仮定しましょう。 そして、私は障害物を考慮に入れていないので、私の質問は次のようになります... 初期速度V、ジャンプ時にキャラクターに適用する衝撃J =(0、-j)、重力G =(0、g)、力F =(+ -f)を指定して(少なくとも確実に推測する)を決定する方法、0)飛行中に継続的に適用され、空気抵抗を考慮することにした場合はAIR_RESISTANCE_MULT (これはオプションです) 、ポイントが、キャラクターがたどるパスによって描かれた曲線の下にあるかどうか 文字通り、どこから計算を始めればよいのかまったくわかりません。実際、必ずしも正確な答えに興味があるわけではありません。AIが完全に動作する必要はないので、うまく機能するハック/近似は素晴らしいでしょう。 編集: Jasonが示唆するように、シミュレーションを使用してこれを解決することにしましたが、そのような場合の対処方法は? CからDへのセグメントを描画し、目的のポイントがこのセグメントの下にあるかどうかを確認する必要がありますか? または、CとDの間のタイムステップをバイナリ検索して、目的のポイントに対して水平距離が十分に近いポイントを探し、その後、垂直方向の差を確認する必要がありますか?(私には少しやり過ぎに思えます)

1
RPGでの経験値のバランスをとる方法
私は現在、クラシックな経験値とレベルアップメカニックを備えたRPGゲームを開発しています。プレイヤーはモンスターを殺し、経験値を獲得し、十分に収集してレベルが上がるとレベルが上がります。 各レベルに到達するために必要なEXPポイントの量と、各レベルの各モンスターが獲得するExpの量のバランスをとるにはどうすればよいですか?

4
星間経済シミュレーション
私はエリートやエスケープベロシティを連想させるゲームを設計しています。これらは古い宇宙取引ゲームで、宇宙で旅する商人を演じます。 私はゲームの経済を少なくとも実際の経済に似せたいと思っています。シミュレーションを実行するために必要なアルゴリズムを理解するために参照できるリソースはありますか? 大きなハードルの1つは、私が数学でかなりひどいことです。したがって、単純な説明が理想的です。 星間経済は、グローバル経済とそれほど変わらないと思います。特定の物は特定の場所でしか製造できません(リソースとテクノロジーのレベルにより)、物を運ぶには時間とお金がかかります。別の場所にいる人は別の物を必要としています...都市ではなく、彼らは惑星です。 Googleで「経済シミュレーションアルゴリズム」や類似の用語を検索しても、ほとんど役に立たず、背景を理解するのに必要なものは何もありません。 私が調査できる有用なリソースを知っている人はいますか?

1
変形面
私はレベルサーフェスの変形する物理的な動作を達成しようとしていますが、これまでの実装から始める方法がわかりません。 表面の形状(平面、立方体、球…)に関係なく、ゲームエンティティ(プレーヤー、敵、オブジェクト…)の位置に小さなインデントを設定したいと思います。 説明するのはちょっと複雑なので、私が話していることを説明しました。球の例を次に示します。 したがって、表面は少し変形する必要があります(本当に柔らかいベッドやソファーのように見えるようにするため)。私のサーフェスでは、スムーズな変形を実現するためにおそらく高い頂点数が必要ですが、私の大きな問題は、この変形を計算するための数学です。 私はOpenGLを使用してC / C ++でプログラミングしていますが、正しい方向のアドバイスは問題ありません。

3
ランダムマップの生成-ランダムノードの分散/クラスタリングの戦略
私は、単純な4Xストラテジーゲームを空間で実行しています。各ノードは、目的点(惑星、小惑星など)です。 マップをランダムに生成するには、以下の手順に従います マップが持つ各ノードのタイプの数を決定します(たとえば、5つの地球のような惑星、10の不毛の惑星など)。 各タイプのノードをマップに配置します。 ステップ2では、各ノードタイプを均等に分散させたいと思います。したがって、たとえば、私はすべての地球のような惑星を配置することから始めます。単純にrand(map.width、map.height)を実行して位置を決定すると、すべての地球に似た惑星が一緒にクラスター化し、その領域から開始するプレーヤーにメリットをもたらす可能性があります。 さまざまなグラフ関数やノイズ関数を使用するなど、相互に広がる一連の(x、y)座標を生成できる方法はありますか?同様に、互いに近い座標を生成する方法はありますか?

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