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

空間と時間を介したオブジェクトの動きに関連します。加速(推力と重力)、質量、衝突応答、摩擦などの概念を含みます。

1
トルクを加えて向きを変える
空間に自由に浮かんでいるオブジェクトがあるとします。このオブジェクトに向かわせたいベクトルと、現在向いている方向を表すベクトルがあります。これらの2つから、方向の変化を表す回転(行列、クォータニオンなど)を取得して、2つのベクトルを整列させることができます。 トルク(角速度の派生物)をオブジェクトに適用する能力しかない場合、目的地をオーバー/アンダーシュートしない、時間をかけてトルクを適用するための良いアルゴリズムは何ですか? (この場合、スラスタを使用して進行方向に自動的に向きを変えたい宇宙船です。ロールは関係ありません。)

1
Box2D WorldCenterと位置の違い
そのため、この問題は数日間続いています。まず、言うBody.getWorldCenter()とBody.getPosition()の違いは何ですか。WorldCenterは重心か何かに関係があるかもしれないと聞いた。 次に、スプ​​ライトのBox2Dボディを作成すると、ボディは常に左下隅にあります。box.getWorldCenter()の周りに1ピクセルの長方形を印刷して確認します。ボディがスプライトの中央にあり、バウンディングボックスがスプライトを包み込む必要があると私が理解していることから、正しいですか? これが私が何を意味するかのイメージです(The Sprite is Red、Body Blue): ここにいくつかのコードがあります: ボディクリエーター: public static Body createBoxBody( final World pPhysicsWorld, final BodyType pBodyType, final FixtureDef pFixtureDef, Sprite pSprite ) { float pRotation = 0; float pCenterX = pSprite.getX() + pSprite.getWidth() / 2; float pCenterY = pSprite.getY() + pSprite.getHeight() / 2; float pWidth = pSprite.getWidth(); …

4
時間の経過に伴う曲線に沿ったオブジェクトの位置の特定
ゲーム内に「投げられた」オブジェクトがいくつかあります。現時点では、これらのオブジェクトに放物線を描くようにして実装しようとしています。オブジェクトの始点、終点、頂点、速度を知っています。 任意の時間またはフレームで、x座標とy座標を特定するにはどうすればよいですか? 放物線は正しい曲線でもありますか?

1
b2World全体の定義をコピーまたは逆計算するにはどうすればよいですか?
複数のBox2D b2World間でボディを移動またはコピーできるようにしたいプラットフォーマーに取り組んでいます。欲望が3倍になりました-エディターでドキュメント間でオブジェクトを移動し、通常のゲームプレイでプレイヤーをレベル間で移動し、プレイヤーがゲーム内で発射できる重要な発射体のプレビューを提供します。最も正確には、数秒先の世界をシミュレートします。 それはのように見える、世界では各ボディのためにDEFに身体データ背中をコピーし、それを再作成して、それからやる、その後、同じ方法でそれに備品をコピーする-私は「長い道のり」パラレルワールドを作ることができます関節についても同じです。すべての速度を再設定します。「コピー」ではなく「移動」の場合は、元のコピーを削除します。 誰かがすでにこのコードを書いているかどうか(そして、もしそうなら、それが実際に機能する設計かどうか?)
8 c++  physics  box2d 

2
ボックス2D原点設定
box2dシェイプの原点を設定しようとしています。デフォルトでは、シェイプは中心を中心に回転します。ただし、図形の左側を中心に回転させるようにしています。たとえば時計のように。 SetXFormなどのことを聞いたことがありますが、その関数は存在していないようです。あなたがそれを知る必要がある場合に備えて、私はC ++を使用しています。 よろしくお願いします。どんな助けでもありがたいです。
8 2d  physics  box2d 

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 …

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

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); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

2
ロープを作成するには?
このゲームを再現したいのですが、ロープの作成方法や、ボールへの影響がわかりません。 基本的に、一方の端にマウスポインターに「取り付けられた」ロープがあり、もう一方の端には大きなボールに取り付けられたロープがあります。ユーザーがマウスを動かすと、まるで殻竿などを振るように、ロープとボールが動きます。 上記のゲームのようにロープを作成するにはどうすればよいですか? 既存のライブラリを使用してロープを作成する方法ではなく、そのようなロープの作成の背後にある基本的な概念と物理学を知る必要があります。ロープを最初から実装できるようにしたいので、どのように実行できるかを知る必要があります。 ありがとう!

3
方向を変更すると、オブジェクトが遅くなり、新しい見出しで加速するはずです(2Dグリッドベース)。
私は2Dゲームにある種の偽の宇宙物理学を実装しようとしています。宇宙船を真上から見下ろしています。方向を変えて速度を最大に設定すると、船のエンジン加速量に応じてその方向に船が加速します。 船がゆっくりとその方向に動き始め、最高速度に達するまで速度を上げていくコードをうまく機能させています。 更新 答えは少し役に立ちましたが、それでも私の最終的な解決策にたどり着けません。理論を実用的なコードに変換することはできません。さらにいくつかのパラメータがあります: 2Dグリッドで作業しています 船のエンジンは1つで、出力を0から1に設定して、全出力を示すことができます。 エンジンに最高速度があります 偽の宇宙摩擦があり、船に電力を供給しなくなった場合、最終的に停止します。 問題 私が抱えている問題は、方向を変えるときです。300の速度で1つのヘディングで移動している場合、ヘディングを反対に変更すると、減速してその方向にその速度に戻るのではなく、設定された速度で瞬時に移動します。 望ましい状態 現在のコード public void Update(Consoles.Space space) { var GameTimeElapsedUpdate = (float)SadConsole.Engine.GameTimeElapsedUpdate; Graphic.PositionOffset = viewPortMaster.Position; // Update the engine ShipDetails.Engine.Update(); // Degrade the current velocity with friction?? if (velocity.Length() < 0f) { var accelerationFrame = ShipDetails.Engine.GetAccelerationFrame(); if (velocity.X > 0) velocity.X …
8 xna  c#  physics  monogame 

1
Box2Dでプレイヤーと発射物の衝突を予測するにはどうすればよいですか?
物理エンジンとしてBox2Dを使用して、リアルタイムのシューティングゲームを作成しています。ゲームプレイは主に、Angry Birdsのような軌道に関するものです。スローモーションエフェクトを作成し、プレーヤーが倒されたときにカメラをプレーヤーに移動したいのですが、実際に衝突が発生する前に、石が空中にあるときにエフェクトを開始する必要があります。 損傷の大きさは衝突時にのみインパルスに基づいて計算されます。これはリアルタイムゲームであるため、プレイヤーはラグなくキャラクターの物理体を動かすことができなければなりません。 どうすれば彼らの死を予測できますか?可能ですか?レイキャストすることはできますが、別のオブジェクトが移動してそのパスをブロックするとどうなりますか?

1
RK4、デリバティブ、ゲーム物理の理解
Gafferon Gamesには、物理​​シミュレーションを構築するためのRK4統合に関する優れた記事があり、ここにあります:統合の基本 個人的には、私の数学と物理学の知識で改善を利用できます。私はベクトル数学、トリガー、いくつかの統計(ソフトウェアに線形回帰式を使用する必要がありました)などの領域と、基本的に高校レベルから大学1年生までのほとんどの領域で快適です。 質問に答えて、私はこの記事を読み、関連するソースをダウンロードし、1行ずつデバッグして、何が起こっているのかを理解しようとしましたが、それでも私が見ているものを明確に取得していないように感じています。私はインターネットを検索して「For Dummies」バージョンを見つけようとしましたが、正直言って少し違った方法で学習し、暗記に重点を置いて数式をじっと見つめていると、何が起こっているのかを理解する必要があるので、それを削減するつもりはありません。柔軟に適用できます。 これが私がこれまでに理解したことだと思いますが、他の誰かが私を明確にしたり完全に修正したりできることを願っています。RK4はオイラーステップを使用し、それを基に時間を進めて、より基本的にいくつかのオイラーステップ(?)を計算し、加重和を使用して次のフレームの最適な位置と速度を決定しますか? さらに、その加速方法(AS3に変換): private function acceleration(state:State, time:Number):Number { const k:int = 10; const b:int = 1; return - k*state.x - b*state.v; } 一定の質量(10)と力(1)をとりますか?そして、奇妙な計算を返します。なぜかわかりません...-質量*位置-力*速度?何? 次に、私の最後の混乱のために、(AS3)のような評価メソッドで: private function evaluateD(initial:State, time:Number, dtime:Number, d:Derivative):Derivative { var state:State = new State(); state.x = initial.x + d.dx*dtime; state.v = initial.v + d.dv*dtime; …

3
ランナーゲームで坂道をジャンプする方法
2Dエンドレスランナーで、プレーヤーが坂を上って「速すぎて」走ってジャンプするとどうなりますか? たとえば、「通常」の場合: .O. . __..O_____ . / . / O/ _/ 彼が十分ゆっくりと右に動いている場合、彼は上向きにジャンプして表面の平らな部分に着陸します。しかし、彼があまりにも速く移動している場合、彼の前進運動が坂を通過するのに十分な高さになる前に彼を坂に接触させるため、ジャンプは効果がありません。速度が十分に高ければ、ジャンプは実質的にありません。 _________ / .O/ O/ _/ この問題を解決する既知の方法はありますか?私はそれが物理的に正しい*と知っていますが、他のゲームがこれを合理的に克服するために使用するテクニックはありますか? 最後の手段として、傾斜しすぎているすべてのスロープを削除する必要があります。 *プレイヤーが後ろにジャンプしないように制限する場合。
8 physics 

2
トラクタービームを実装するには?
私は、プレイヤーがトラクタビームのようなものを使用してオブジェクトを拾い、それらを持ち運ぶことができるゲームに取り組んでいます。 ビームの中心に向かってオブジェクトを引き付けることは難しくありません。しかし、オブジェクトが中心に十分近づいたら、プレイヤーが動いている間、オブジェクトをそこに置いておく必要があります。これが問題です。それを行うには2つの方法が考えられますが、どちらにも問題があります。 プレーヤーの位置が変更されるたびにオブジェクトの位置を更新し、ビームの中心に配置します。 オブジェクトの速度を更新して、ビームの中心を直接指すようにすると、遠ざかるほど速度が上がります。 移動と回転はどちらの方法でも問題なく機能しますが、運ばれたオブジェクトが他のオブジェクトと衝突すると、物理学は正しくありません。 最初のアプローチでは、物理学は完全に無視されます。運ばれたオブジェクトは、何でも邪魔にならないように押し出します。位置の変更は、速度に基づいて、世界の物理学の一部としてのみ行われることになっているためです。 2番目のアプローチでは、物理学は基本的には本来あるべき振る舞いをしますが、過剰反応します。問題は、回転して移動しているときでも、運ばれたオブジェクトをビームの中心に保つために、高い速度値を使用する必要があることです。したがって、運ばれたオブジェクトが別のオブジェクトに触れると、衝突によって速度が大きくなりすぎます。 これを適切に実装するにはどうすればよいですか?現在の私の推測では、2番目のアプローチを使用して、運ばれたオブジェクトの特別な処理をワールドフィジックスに追加し、衝突時またはプレーヤーが持ち運びを停止したときに速度を正解値に下げることです。しかし、それはかなり洗練されていない回避策のようです。 編集:いくつかの疑似コードを追加して、それが現在どのように機能するかを示します(上記の2番目のアプローチになります) void attract_object(object, ticks) { Vector distance = beam_center - object.center; // If the object is not close to the beam center, attract it slowly if (magnitude(distance) > 10) { object.velocity += distance.normalized() * ticks * 0.1; return; } // Here comes …
8 2d  physics 

2
モジュラー宇宙船制御
私は宇宙船を使った物理ベースのゲームを開発しています。 宇宙船は、関節で接続された円から構成されます。一部のサークルにはエンジンが取り付けられています。 エンジンは円の中心を中心に回転し、推力を生み出すことができます。船のエンジンごとに回転と推力を設定することで、船を一方向に動かしたり、ある点を中心に回転したりしたい。 これを達成するために各エンジンに必要な回転と推力を見つけるにはどうすればよいですか?

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