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

「平行移動」の簡単な用語。通常、ポイントAからポイントBに向かうルート上のエンティティの位置の変化。

3
Animal Crossingのような「落下」3D地形を作成するにはどうすればよいですか?
Animal Crossingには、世界地図をスクロールするユニークな方法があります。キャラクターが下に移動すると、世界は段ボールのチューブにくっついているように、上部を回転します。 このビデオは、それがどのように動くかを示しています。 この効果を作成するにはどうすればよいですか?
15 3d  movement  maps 

4
2点間の曲線運動
オブジェクトを素敵な曲線運動でポイント間を移動できるようにする良い方法は何ですか? ホーミングミサイルの軌道など、終了位置も動いている可能性があります。
15 xna  2d  movement 

3
カスタム形状の宇宙船を動かすAI(動きの動作に影響を与える形状)
ネットワークターンベースの3D-6DOF宇宙艦隊戦闘戦略ゲームを設計しています。これは、船のカスタマイズに大きく依存しています。質問を設定するにはゲームについて少し知る必要があるので、ゲームについて少し説明しましょう。 私が目指しているのは、カスタムシェイプと付属モジュール(プロペラ、トラクタービームなど)を備えた独自の艦隊を作成する能力です。これにより、各艦に長所と短所が与えられるため、艦隊の分布が多数あります。たとえば、側面に2つのプロペラを備えた長い船は、その飛行機の周りを簡単に回転し、後方に多くのプロペラを置かない限り、大きな船はゆっくりと動きます(したがって、移動するときに「建設」ポイントとエネルギーを多く消費し、その方向に向かって速く移動するだけです。)この機能を中心にすべてのゲームのバランスをとる予定です。 ゲームは、注文と戦闘の2つのフェーズを中心に展開します。注文フェーズでは、さまざまな船を指揮します。すべてのプレイヤーが注文フェーズを完了すると、戦闘フェーズが開始され、船の注文がリアルタイムでしばらくの間解決され、その後アクションが一時停止し、新しい注文フェーズがあります。 問題は、プレイヤーの入力について考えるときに発生します。船を動かすには、操縦、前進、ブレーキ、定位置で回転したい場合、異なるプロペラをオンまたはオフにする必要があります...これらのプロペラは全力で動作する必要がないため、より多くの動きを実現できますより少ないプロペラとの組み合わせ。 このアプローチは少し退屈だと思います。プレイヤーはモーターなどをいじりたくありません。ただ移動して殺したいだけです。私がプレイヤーにこれらの船に命令を与える方法は、目的地と回転によるもので、AIは正しいプロペラ力を計算してその運動と回転を実現します。ターン計算全体を通して推進力が同じである必要はないため(注文が与えられた後)、船が移動するときに反応し、必要に応じてプロペラの出力を動的に調整する場合はクールになりますが、実装するのが難しすぎて、ゲームが機能するために実際には必要ありません。 どちらの場合でも、AIはどのプロペラをアクティブにして最適な(または少なくとも最悪ではない)軌道を達成するかをどのように決定しますか? 私はいくつかのアプローチについて: AIの学習:船の種類は試行錯誤によって動きを学習し、より多くの用途で動作を調整し、最終的に「スマート」になります。AIコーディングにこれほど関与したくはありませんし、プレーヤーにとってはイライラすることになると思います(プレイしなくても学習させることができたとしても)。 事前に計算されたタイムステップの動き:船の作成時に、特定のデルタ時間の各プロペラ構成と出力について、考えられるすべての動きが計算されます。メモリ集約型、,い、悪い。 事前計算された軌跡:上記と同じですが、各デルタ時間ではなく、軌跡全体が可能な限り適合します。戦闘フェーズ全体でプロペラの構成を固定する必要がありますが、それでもメモリを大量に消費し、ugくて悪いです。 継続的なブルートフォース: AIは、戦闘フェーズ全体で可能なすべてのプロペラ構成を継続的にチェックし、いくつかのタイムステップを事前計算し、それに基づいて最適なプロペラを決定します。短所:今は良いことは後でそれほど良くないかもしれませんし、CPUに過度に負荷がかかり、見苦しく、悪いです。 単一のブルートフォーシング:上記と同じですが、シミュレーションの開始時にブルートフォーシングのみが行われるため、戦闘フェーズ全体で一定のプロペラ構成が必要です。 連続角度チェック:これは完全な移動方法ではありませんが、「愚かな」プロペラ構成を破棄する方法かもしれません。現在のプロペラの法線ベクトルと最後のベクトルを考えると、角度に基づいてプロペラに必要なパワーを概算できます。これは、戦闘フェーズ全体を通して継続的に行わなければなりません。私は最近、これを考え出したので、あまり考えませんでした。先験的に、それは「今は良いことは後で良くないかもしれない」という欠点もあり、より良い推進構成を作るために一緒に行動する他のプロペラを気にしません。 私は本当にここで立ち往生しています。何か案は?

3
Unity-船を2Dトップダウンゲームのポイントに現実的に移動する方法
帆船をマウスでクリックした場所に移動しようとしています。この動きは現実的である必要があります(船が動き回る後ろにあります)。したがって、マウスのクリックが左で船の前にある場合、船は右回転するために曲がりくねった経路でそこに移動する必要があります 誰かがこの問題で私を助けてくれたら嬉しいです

3
完全に動きながら互いに追従するオブジェクトのテクニック?
オブジェクトが前にあるオブジェクトの前の位置を移動する場所で、オブジェクトがどのように互いに追従するのか疑問に思います。先行オブジェクトが停止すると、後続のすべてがその位置で停止するはずです。それで、これはどのように達成されますか? そのようです: 編集: 私が達成したいのは、次のすべてのオブジェクトが、前の先頭のオブジェクトがたどるパスを「歩く」ことです。他のすべてのオブジェクトは、先頭のオブジェクトの速度で移動します(これは、速度ベクトルを後続のすべてのオブジェクトに渡すことによるものです)。しかし、お互いの距離も維持しながら、すべてのオブジェクトをパス上で移動/一時停止させるにはどうすればよいですか?
14 movement 

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 …

2
トップダウンRPGの動きに取り組むにはどうすればよいですか?
Javaで書いているゲームがあります。それはトップダウンRPGであり、私は世界の動きを処理しようとしています。世界の大部分は手続き型であり、私は世界中のキャラクターの動きを処理し、画面に変更をレンダリングする方法に取り組むのに苦労しています。私はすべてのタイルを含むブロックにロードされた世界を持っています。 キャラクターの動きにどのように取り組むのですか? 私は困惑し、どこに行けばいいのかわかりません。 編集:まあ私は手元の問題で抽象的だった。 今のところ、すべてを厳密に2D配列に固定し、ブロック内のブロックIDとプレーヤーオフセットを保存することしか考えられません。
13 java  tiles  rpg  movement 

1
さまざまな移動タイプを処理する経路探索アルゴリズムはありますか?
私はBattleTechボードゲームシミュレーターhttp://en.wikipedia.org/wiki/BattleTechのボットを開発しています。これはターンベースです。 ボードは六角形に分割され、それぞれが異なる地形タイプと標高を持っています。他のロボットを破壊するには、それらの上を移動するロボットを運転します。 ダイクストラとA *のパスファインディングアルゴリズムしか知りませんが、問題は3種類の動きがあることです:いくつかの六角形を歩く、走る、ジャンプする(それぞれに独自のルールがあります)。ウォークアンドランはほぼ同じです。 最適なパスは、組み合わせまたは各移動タイプです。マップの例はこちらhttp://megamek.info/sites/default/files/isometric_view.png この複雑な経路探索に適したアルゴリズム、または各運動タイプのA *結果を組み合わせる方法を知っていますか?

2
大規模なネットワーク化された世界でエンティティのパス検索と移動を処理する方法
32x32ボックスに分割されたタイルを使用した上記の画像を考慮すると、近くにいる近くのプレイヤーに「aggro」とマークされたエンティティがあります。このモンスターに理想的にはプレイヤーを追いかけたい(そしてしばらくの間プレイヤーを追い続けたい)。現在、私の唯一の動きは、リモートエンティティの単純な補間器で行われます。これは、動きの更新間のギャップがかなり小さいために機能します。 モンスターがいる位置に移動したいことをクライアントに伝えることができません。それはエンティティが本来よりもはるかに速く移動するためです(これはおそらく補間coに数学を使用して解決できます) -効果的)しかし、もっと重要なのは、現実的に見えず、壁をクリップする可能性があることです!回避できる場合は、サーバー上の動き全体をシミュレートしたくありません...できると思いますが、それでもクリッピングの問題は解決しません。解決策には、定期的なノード更新をパス検索および送信し、それらに動きをシミュレートさせることが必要ですが、確信はありません。 ありがとう!

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);

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

2
クライアント側の予測で移動オブジェクトを補正する方法は?
Star Controlのようなmeleeをサポートするゲームサーバーを実装しています。船を飛ばして射撃し、動きを動かすための超単純な速度/加速/減衰物理学を備えています。 私は、Valve、Gafferon、Gambettaを読み、クライアント予測のためにGambettaのアルゴリズムを実装しました。 クライアント予測は、サーバーからの位置を更新することでプレーヤー船に作用し、サーバーで未処理の入力をプレーヤー船に再適用します。 残念ながら、私のゲームではうまく機能しません。ガンベッタの例では、すでに移動しているオブジェクトや段階的に更新されるコマンドは考慮されていないという事実と関係があると思います。(「ステップ」とは、フレームを意味します)。そのため、私のゲームでは、プレイヤーは(すでに動いている)船を加速するために押し上げます。船はクライアント上で動き続け、コマンドをサーバーに送信し、通常は次のステップでサーバーからワールドスナップショットを受信します。私はもっ​​と何かを得ます: playerコマンドはクライアントのステップ3で実行されますが、サーバーではサーバーのステップ5でのみ実行されます。クライアントのステップ6でクライアントが世界のスナップショットを受信するまでに、特に高速の場合、予測はかなりずれます。 問題の核心は、クライアントがステップ5でコマンドを実行するのに対し、サーバーはステップ6でコマンドを実行することです。コマンドを使用してクライアントステップを送信し、サーバーをロールバックしてクライアントタイムステップを使用してコマンドを再実行することを検討しました。ただし、ロールバック以降に受信したコマンドがどうなるか、送信されたステップを変更することによってクライアントを不正に利用する方法など、他の多くの問題が発生する可能性があります。 このようなGoogleの動画を読んだり見たりすると、別のアプローチが言及されています。このアプローチでは、プレーヤーの位置をスナップショットの位置に合わせて徐々に変更します。 私の質問: Gambettaのアルゴリズムを一定のステップ移動で機能させることができますか?それとも概念的に私のゲームと互換性がないのですか? ステップを徐々に補間するのは正しい方法ですか?もしそうなら、サーバーから受信したばかりのオブジェクトと一致するように、クライアントの位置から既に移動しているオブジェクトをどのように補間しますか? これらの方法、段階的補間、Gambettaのアルゴリズムは連携して機能しますか、それとも相互に排他的ですか?

2
2つのネットワーク化された状態の間の補間?
私はクライアント側に多くのエンティティをシミュレートしていて(それらの速度はフレームごとにそれらの位置に追加されます)、自分で推測させます。彼らは彼らが最後に見られた場所とその速度の変化についての更新を送信します。これは素晴らしい作品で、他のプレイヤーはこの作品を見つけました。ただし、しばらくすると、これらのプレーヤーはしばらくして非同期化を開始します。これはレイテンシが原因です。 状態間を補間して、正しい位置に表示されるようにしたいのですが。プレーヤーが最後に見た場所とその現在の速度はわかっていますが、最後に見た状態に補間すると、プレーヤーが実際に-後方に-移動します。他のクライアントにはベロシティをまったく使用できず、単に適切な方向に向けて「強打」するだけでしたが、これによりジャギーな動きが発生すると思われます。代替案は何ですか?

2
2Dプラットフォーマーでキャラクターを凹凸のある壁の上を歩くにはどうすればよいですか?
私は、横向きや逆さまなど、あらゆる角度で有機的な表面を「歩く」ことができるプレイアブルキャラクターを作りたいです。90度の角度の直線ではなく、傾斜したカーブしたフィーチャを持つ「オーガニック」レベル。 私は現在AS3(中程度のアマチュア経験)で作業しており、基本的な重力ベースの物理学にNape(かなり初心者)を使用しています。この歩行のメカニズムは明らかに例外です。 おそらくネープ拘束を使用して、この種の歩行のメカニズムを実行する手続き的な方法はありますか?または、レベルサーフェスの輪郭に沿って明確な歩行「パス」を作成し、それらを使用して歩行の動きを制限するのが最善でしょうか。

2
クリックアンドドラッグの動きを特定の領域に制限する方法
やや一般的なタイトルをお詫び申し上げます。私がやろうとしていることを成し遂げる方法については、あまり手がかりがありません。そのため、可能な解決策を研究することさえ難しくなっています。 私はある種のパスマーカーを実装しようとしています(たぶんそれに最適な名前があるかもしれませんが、これは私が思いつくことができる最高のものです)。 プレーヤーの前にはパスマーカーがあり、ターンの計画が完了したらプレーヤーがどのように移動するかを決定します。プレーヤーはマーカーをクリックして選択した位置にドラッグできますが、マーカーは定義された作業領域(灰色のビット)内でのみ移動できます。 そのため、次の2つの問題に悩まされています。 まず、その実行可能な領域をどのように正確に定義する必要がありますか?プレーヤーが実行可能な角度を形成するための開始点となる2つのベクトルを想像できます。これらの2つの弧は、プレーヤーの位置に中心がある円から発生する可能性がありますが、すべてをどのように配置するかは明確にわかりません一緒。 次に、マーカーを配置できる領域を定義した後、その領域内にのみマーカーを配置するように強制するにはどうすればよいですか?たとえば、プレーヤーがマーカーをクリックしてドラッグすると、マーカーは作業領域内を自由に移動できますが、領域の境界を離れてはなりません。たとえば、プレーヤーがマーカーを上向きにドラッグし始めると、マーカーが作業領域の端(下の最初の図)に到達するまで上向きに移動しますが、その後、プレーヤーが横向きにドラッグを開始する場合、マーカーはドラッグ中にドラッグに追従する必要がありますエリア内(下の2番目の図)。 これがあまり混乱しないことを願っています。みんなありがとう。 編集:これが違いを生む場合、私はマーマレードSDKでC ++を使用しています。

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