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

位置、方向、または速度を表すために使用でき、空間問題を単純化または完全に自明化できる数学的概念。


3
球と平面の間の衝突応答を計算するにはどうすればよいですか?
シンプルな3Dゲームを作成しようとしています。ゲームの世界の制限内でプレーヤーを制限する必要があります。プレイヤーが世界の側面にぶつかったとき、プレイヤーの船を少し跳ね返らせたいです。 事実、私はプレイヤーをボックス内に閉じ込め、側面から逃げるのを止めようとしています... ゲームワールドの限界を、法線と原点からの距離を持つ平面のコレクションとして定義できました。プレーヤーには球形の境界球があり、このウェブサイトhttp://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.phpから衝突を検出することができました。 衝突が検出されたときにどうすればよいのか、私はまったく理解できません。私が管理できる最高の方法は、プレイヤーが飛行機に詰まっている、まっすぐ進む、または非常に速い速度で繰り返し跳ね返ることです。 常識では、法線を使用して平面からの反射角度を計算し、それをプレーヤーの速度に適用する必要があると言われていますが、まず、プレーヤーが平面を通過したかどうかを確認する必要があります。いい結果になる。

3
2点間の線上の点を取得する
私はJavaScriptで単純な宇宙ゲームを作成していますが、今はベクトルに関して壁にぶつかっています。 ゲームビューは、2Dグリッドでトップダウンです。ユーザーがグリッドをクリックすると、宇宙船がその場所に飛びます。 したがって、2つのポイントセットがある場合: { x : 100.2, y : 100.6 }; // the ship { x : 20.5, y : 55.95 }; // the clicked coordinates ゲームループが1秒あたり60回の反復でティックし、望ましい船の速度が1ティックあたり0.05ポイント(1秒あたり3ポイント)である場合、ゲームループの各ティックごとに船の新しい座標セットを計算するにはどうすればよいですか? ps慣性や船に影響を与える複数のベクトルを考慮したくないので、船は何をしている(つまり、一方向に飛んでいる)のを止めて、クリックした座標に静的な速度で移動したいだけです。

3
優れたクロスプラットフォームのC ++ベクトルグラフィックスライブラリはありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前休業。 ゲームを作っていて、ベクターグラフィックスを使用したいと考えています。Cairoを使用して再コーディングを開始しましたが、パフォーマンスは恐ろしいものです。だから、私は別のライブラリを探しています。C ++とクロスプラットフォーム(Direct2Dなしなど)に対応している必要があります。このように前に誰かが尋ねた別の質問がありますが、適切な回答がありませんでした。何かがあるはず…?
9 c++  graphics  vector 

4
非整列衝突回避(ステアリング)を使用しているときにオブジェクトの衝突が移動する
まれなケースだと思うのに、未調整の衝突回避に問題があります。2つのオブジェクトを互いに近づけるように設定しましたが、オフセットはわずかです。そのため、1つのオブジェクトがわずかに上方向に移動し、1つのオブジェクトがわずかに下方向に移動しています。 私の位置合わせされていない衝突回避ステアリングアルゴリズムでは、オブジェクトの前線と、これら2つの線が最も近い他のオブジェクトの前線上の点を見つけています。これらの最も近い点が衝突回避距離内にあり、それらの間の距離が2つのオブジェクトの境界球の2つの半径よりも小さい場合、オブジェクトは適切な方向に離れるはずです。 問題は、私の場合、線上の最も近い点が実際の衝突点から本当に遠くにあると計算されることです。これは、オブジェクトが通過するときに、各オブジェクトの2本の前進線が互いに離れるからです。問題は、これが原因でステアリングが行われず、2つのオブジェクトが部分的に衝突することです。 衝突点を正しく計算する方法について何か提案はありますか?おそらく、2つのオブジェクトのサイズを考慮に入れているのでしょうか。

2
ベクトルを使用してXNA / C#でスプライトを移動する
現在、C#言語を使用したXNAゲーム開発を検討しています。 メインのゲームハンドラーと「スプライト」クラスの2つのクラスがあります。以下は、いくつかの基本的な疑似コードで、問題を適切に説明していると思います。 Game.cs class game { sprite the_sprite; void update(time) { var mouse = mouse.state if(mouse.clicked) { this.the_sprite.moveTo(mouse.x, mouse.y) } this.the_sprite.update(time) base.update(time) } } Sprite.cs class sprite { vector2 location; vector2 move_to; void moveTo(x, y) { this.move_to = new vector2(x, y) } void update(time) { if(this.location.x > this.move_to.x /* (or …
9 xna  c#  vector  movement 

1
定常に近い物理オブジェクト間のジッターを防ぐにはどうすればよいですか?
私はカスタムの物理エンジンを実装しており、思い通りに機能するようになっています。重力、衝突、衝突応答があります。残念ながら、ほとんど静止しているオブジェクトの間にジッターがあるようですが、ほとんどの場合、変更できない低物理ティックが原因です。 私はオンラインで調べて、自分の試みのいくつかを含め、見つけた実装のいくつかを試しました。これが私が試した解決策です: 速度/運動量/ポテンシャルエネルギーがしきい値を下回るときの動きの減衰。 速度/運動量/ポテンシャルエネルギーがしきい値を超えている場合にのみ重力を適用します。 スリープ機能の実装。これは、最後の60フレームのオブジェクトの位置をチェックし、しきい値の境界ボックスの外に移動していない場合はスリープします。 衝突テストと解決を適用するときに、オブジェクトを上から下に反復します。 これが私のコードです: for each (auto ball in m_Balls) { ball->Update(t); ball->Accelerate(m_Gravity); } // This disgusting hack sorts the balls by height. In a more complete physics // implementation, I guess I could change the sorting based on the direction of // gravitational force. This hack …

0
OpenFLを使用したSceneManagerの実装
OpenFLとHaxeを使用して基本的なSceneManagerを実装しようとしています。OpenFLとHaxeの使用経験はあまりないので、いくつか問題があります。 以下は、SceneManagerクラスの設計方法です。 package; import openfl.display.Sprite; import openfl.Lib; class SceneManager extends Sprite { private var currentScene: ...; public function new(rootScene: ...) { super(); currentScene = rootScene; Lib.current.addChild(currentScene); } public function changeScene(newScene: ...): Void { Lib.current.removeChild(currentScene); currentScene = newScene; Lib.current.addChild(SceneTwo); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

3
プレイヤーが描いた線がパスに沿っているかどうかを確認するにはどうすればよいですか?
ユーザーが辿らなければならない目に見えないパスを描きたいと思います。そのパスをポイントとして保存しました。プレーヤーが線を引いたとき、それが保存したパスをたどっているかどうかをどのようにテストできますか? 文字Aをトレースする例を次に示します。 if((traitSprite.getX()<=Invisible.X && traitSprite.getX()>=Invisible.X )){...} (traitSpriteはスプライトです。)

2
特定のポイントを囲む最も近いポイント(それによってポリゴンを形成する)を見つけるにはどうすればよいですか(画像を参照)
私はゲームエンジンを使用していますが、私の仕事は、剛体メッシュの破壊をシミュレートするコードを追加することです。 現在、私はキューブの破壊に取り組んでいます。 私はボロノイのアルゴリズムを使用して(現実的な)破片を作成し、半平面法を使用してボロノイセルを生成しています。 これを行う方法はすべてのシードポイントに対してです。残りのシードポイントを使用して、垂直二等分面(画像の直線の黒い線)である平面を作成し、これらのすべての平面の交点を計算して、明確なポイントを与えます(すべてのオレンジ色のドット)。 ここまで来ました。 これらの計算されたすべての交点のうち、シードポイント(赤で囲まれたポイント)を最も近くかつ囲んでいる交点のみが必要であり、残りはすべて破棄する必要があります。 私が持っている情報: 1)すべての平面の平面方程式(正規化された法線ベクトルと原点からの距離で定義) 2)交点(計算したもの) 誰かが私が赤で囲まれたポイントを見つける方法を見つけるのを手伝ってくれる?

3
AABBを使用した衝突検出の問題
メインゲームスプライトとさまざまなプラットフォームの間にAABBを使用して、単純な衝突検出ルーチンを実装しました(以下のコードを参照してください)。それは素晴らしい働きをしますが、私は今、私のキャラクターを倒すために重力を導入しています、そしてそれは私のCDルーチンでいくつかの問題を示しています。 問題の核心は、私のCDルーチンがスプライトを他のスプライトにほとんど浸透していない軸に沿って戻すことです。したがって、XよりY軸の方が大きい場合は、X軸に沿って移動します。 しかし、今私の(ヒーロー)スプライトはフレームあたり30ピクセルの速度で落ちています(それは1504の高画面です-「通常の」重力をシミュレートしたいので、これだけ速く落ちる必要があります。 )これらの問題が発生しています。私は何が起こっているのか(そして私がそれを引き起こしていると考えていること-よくわかりません)をいくつかの写真で示します(写真の下のコード)。 この問題を回避する方法についていくつかの提案をいただければ幸いです。 明確にするために、上の右の図で、位置が「誤って」修正されていると言うと、少し誤解を招く可能性があります。コード自体は、それがどのように書かれているのか、つまり別の言い方をすると、アルゴリズム自体が正しく機能します。期待どおりに動作する場合はアルゴリズム自体ですが、この問題の発生を防ぐために動作を変更する必要があります。画像内のコメントを明確にしてください。 私のコード public boolean heroWithPlatforms(){ //Set Hero center for this frame heroCenterX = hero.xScreen+(hero.quadWidth/2); heroCenterY = hero.yScreen+(hero.quadHeight/2); //Iterate through all platforms to check for collisions for(x=0;x<platformCoords.length;x+=2){ //Set platform Center for this iteration platformCenterX = platformCoords[x]+(platforms.quadWidth/2); platformCenterY = platformCoords[x+1]+(platforms.quadHeight/2); // the Dif variables are the difference …

3
Vector3対Vector2-パフォーマンス、使用法?
私は現在XNAをいじって、シンプルな2Dプラットフォーマーを作成しています。複数のレイヤーを追加して少し挑戦することを考えていました。 Vector2自分の位置にを使用する代わりに、を使用してVector3、Zレイヤーの深さとしてのみ使用します。ただし、不明な理由[1]の間Vector2で演算子を使用できないVector3ため、ゲーム内の他のすべての、たとえば、加速、速度、オフセットを変更して、エラーなしで実行できるようにしました。Vector2position += offset また、回転変数をからfloatに変更し、Vector3そのZ値を使用してテクスチャを回転させました。私が使用することを計画していますXし、Y規模フリップあなたはスーパーペーパーマリオ効果を得るので、私のテクスチャをします。 しかし、これらVector2のすべてをsで変更した後Vector3、私はそれについて少し気分が悪くなりました。これはゲームのパフォーマンスにどのように影響しますか?私の小さなプラットフォーマーゲームのパフォーマンスについて心配する必要はないはずですが、それだけに興味があります。 間の任意の顕著なパフォーマンスがありVector2sおよびVector3sがそれらを追加したり掛けるとき、たとえば、または呼び出すときNormalize、TransformまたはDistance? [1]余談ですが、Vector3とVector2の間の計算に演算子がないのはなぜですか?

2
レイキャスティングチュートリアル/ベクトル数学の質問
私はhttp://lodev.org/cgtutor/raycasting.htmlでこの素晴らしいレイキャスティングチュートリアルをチェックしていて、おそらく非常に単純な数学の質問があります。 DDAアルゴリズムで、光線が1つのx側から次のx側へ、または1つのy側から次へと移動する距離であるdeltaDistXおよびdeltaDistY変数の計算を理解できません。 y側、世界地図を構成する正方形のグリッド内(下のスクリーンショットを参照)。 チュートリアルでは、それらは次のように計算されますが、あまり説明されていません。 //length of ray from one x or y-side to next x or y-side double deltaDistX = sqrt(1 + (rayDirY * rayDirY) / (rayDirX * rayDirX)); double deltaDistY = sqrt(1 + (rayDirX * rayDirX) / (rayDirY * rayDirY)); rayDirYとrayDirXは、キャストされた光線の方向です。 これらの数式をどのように取得しますか?ピタゴラスの定理がその一部であるように見えますが、どういうわけかここに関与する分割があります。ここで不足している数学的知識について誰かが私に手掛かりを与えたり、それがどのように導出されたかを示すことによって式を「証明」したりできますか?

2
ベクトルを回転させる
一人称視点のカメラで、視線方向をd1からd2にスムーズに変更したい。後者の方向は、目標位置t2によって示される。 これまでのところ、正常に機能する回転を実装しましたが、回転の速度は、現在の方向が目的の方向に近づくほど遅くなります。これは避けたいものです。 これまでに作成した2つの非常に単純なメソッドを次に示します。 // this method initiates the direction change and sets the parameter public void LookAt(Vector3 target) { _desiredDirection = target - _cameraPosition; _desiredDirection.Normalize(); _rotation = new Matrix(); _rotationAxis = Vector3.Cross(Direction, _desiredDirection); _isLooking = true; } // this method gets execute by the Update()-method if _isLooking flag is up. …
8 xna  c#  camera  rotation  vector 

1
オブジェクトを回転させてプレイヤーに向けます
これはおそらく単純なベクトルの質問ですが、どうすればよいかわかりません。 ベクターの位置にオブジェクトがあります(ox,oy)。可能性のあるすべての更新で、ユーザーは画面上を歩き回り(px,py)、いつでもその位置にいます。オブジェクトが常にプレーヤーに面するようにするにはどうすればよいですか?角度を度単位で取得する必要があります。 これは私がいじくり回してきたものですが、方向はすぐにユーザーがいる場所を指していません。代わりに、ユーザーが歩いている方向に徐々に増加します。 objVec.Normalize(); playerVec.Normalize(); obj.Rotation = MathHelper.ToDegrees((float)Math.Acos(Vector2.Dot(objVec, playerVec))); 私はそれが完全に間違っているかもしれないので、どんな助けでもありがたいです!

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