問題タブ [chipmunk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocos2d-iphone - Cocos2d、TMXTiledMaps、および Chipmunk を使用して移動プラットフォームを実装する方法
Cocos2d ゲームの開発はゆっくりですが着実に進んでいますが、動くプラットフォームの作成に行き詰まっています。
主人公は物理演算と衝突検出を必要とするため、シマリスの形/体です。シマリス スペース内の体の量を削減するために、TMXTiledMap を反復処理するクラスを作成しました。だからこんな地図で
5 つの個別のボディ (四角形) の代わりに、2 つのボディがあり、1 つは幅が 3 タイル、もう 1 つは高さが 2 タイルです。
どのタイルが移動プラットフォームの一部であるかを識別し、必要に応じてタイルを移動するコードを動作させることができました。
ただし、これを適切に機能させるには、ボディをタイルと一緒に移動する必要があります。そして、これは私が立ち往生しているところです。体は静的な質量なので...
platformShape->body->p = cpv(x,y);
何もしません (これは予想される動作だと思います)。
しかし、それらの質量を静的以外の値に設定すると、すべての物理が作用し、物体が期待どおりに動作しないか、見方によっては完全に動作します。彼らは不規則に動き、別の体 (例: 主人公) にぶつかると回転します。私が求めているのは、特定の方向にスムーズに移動する、典型的なプラットフォーム ゲームに見られる典型的なタイプの移動プラットフォームです。
私の質問は; 誰かが以前にこのようなものを実装したことがありますか?あなたのテクニックは何でしたか? または、このようなものを実装するとしたら、どのようにしますか?
関連するコードはこちらです。何よりも概念的な誤解だと思うので、ペーストビンに入れました。
iphone - スタック オブジェクトをスイングするには?
iPhoneのスクープゲームやTower Bloxxのようにオブジェクトを積み上げたい。加速度計に基づいてそのスタックを左右に移動したい。シマリスを使ってやろうとしています。積み重ねることはできますが、左から右に、またはその逆に移動しているときに、そのスタックをスイングすることはできません。
誰かがそれを知っているなら、私を助けてください。
前もって感謝します
iphone - c および object-c 変数
私がやろうとしていることを明確に説明できるかどうか見てみましょう...私はそれを核心の問題に絞り込みます。
私は客観的な c プログラムと ac コールバック関数を持っています。コンテキストは、iPhone SDK で cocos2d とシマリスの物理学を使用していることです。私がやろうとしているのは、弾丸とモンスターの衝突時に「スコア」を更新することです。スコアの更新を除いて、すべて正常に動作します。
ゲーム ロジックは obj-c にありますが、実際の衝突ロジックは、衝突時に呼び出される ac 関数で行われます。たとえば、衝突の炎/爆発をレンダリングするのはそこです。スコアを更新したいのもそこです。
ここに問題があります。しかし、score は「GAME」オブジェクトのインスタンス変数であり、そのインスタンス変数への可視性がありません。&addscore などと呼ばれる参照によって c 関数に別のパラメーターを渡すことができると思いますが、「スコア」以外にも更新する必要がある他の変数がたくさんある可能性があるため、より明白な方法があるかどうか疑問に思っていました。衝突。
つまり、オブジェクト内の変数が c 関数から見えるようにする必要があり、逆もまた同様です。関数内に設定された変数がオブジェクト内で見えるようにする必要があります。
前もって感謝します。
iphone - Cocos2dとシマリスの深さをシミュレートする方法は?
オブジェクトを投げるゲームを開発していますが、水平に投げる代わりに、ゲームの深さをシミュレートする架空の z 軸に沿って投げられることをシミュレートしたいと考えています。任天堂のアヒル狩りゲームみたいなやつ。誰かがこれを実装するために正しい方向に私を向けることができますか?. 私の最初のアイデアは、一連の「床」を実装してオブジェクトを静止させ、オブジェクトを徐々に小さくし、y 軸に沿ってオブジェクトに力を加えることでした。これは、これに対する可能なアプローチに近いものですか?. 私はこれまでにこのようなことをしたことがありません。どんな助けでも大歓迎です。
ありがとうございました。
-オスカー
cocos2d-iphone - シマリスのダイナミクスによる発射体運動計算
ターゲットを攻撃するために剛体にインパルスを適用できる Ai を少し実装する必要があります。大砲から発射される砲弾のように。物理エンジンには Chipmunk Dynamics を使用しています。
私の物理学と同様に、私の数学はひどいですが、私は読んでいて、SO とこのウィキペディアのエントリからの以下の助けを借りて、これを得ました
これにより、発射体を発射するために必要な水平速度と垂直速度を計算できる角度が得られます。
しかし、それは機能していません。これは、いくつかの理由でまったく驚くことではありません。第一に、私は数学と物理が苦手だからですが、他にもいくつかのことで混乱しているからです。
この方法は質量を考慮していないようです。それはすべきですか?私はそれが非常に重要だと思ったでしょうか?でも、大学で美術を勉強したので、それは間違っているかもしれません。
Box2d には PTM_RATIO がありますが、シマリスにはそのようなものはありません。私の値はシマリスの空間座標にどのように対応していますか?
私はラジアンと、それらが度にどのように異なるか、および2つの間の変換方法を知っています。しかし、ここではどちらを使用する必要がありますか? angle1 と angle2 を度に変換する必要がありますか? やったとしても、まだうまくいきません。
要約すると、物理学とシマリスについて、私には理解できないことがたくさんあります。だから私はここにいて、助けを求めています。
シマリスにこれを理解するために使用できるものはありますか、または誰かがこれを自分で理解する必要がある場合は、助けていただければ幸いです。
iphone - シマリスの衝突検出
私はシマリスにまったく慣れておらず、数日間使用しているだけなので、これはかなり明白なことだと思いますが、これに関するドキュメントは見つかりません。シマリスに、指定された2つの形状が衝突したことを通知するコールバックまたはメソッドはありますか?
そうでない場合は、スプライトでcgrectcontainsを使用するのが最善の方法ですか?
-オスカー
iphone - 速度に対するシマリスの条件付き衝突?
私はcocos2dでゲームをやっていて、シマリスを使って物理学を管理しています。私が達成したいのは、ほぼすべての任天堂ゲームが行うことで、速度が正である限り、衝突を引き起こすことなく、キャラクターがジャンプして高層階 (衝突形状) で休むことができ、速度が負になると衝突が発生することです。起こります。
基本的に、速度値に基づいて 2 つの形状間の衝突を調整したいと考えています。誰かがこれを実装する方法について正しい方向に向けてくれませんか?. ありがとうございました。
-オスカー
objective-c - voidポインタからデータとタイプをログに記録する方法は?
私は次のコードを持っています:
iPhone開発で使用されているChipmunk物理フレームワークからそれを認識している人もいるかもしれません。基本的に、cpSpaceに関する他のコードで何かを行っているためにここでクラッシュしますが、ここで送信されるオブジェクトタイプを把握し、NSLogステートメントをクラッシュさせます(そして他の大混乱を引き起こします)。
タイプやコンテンツをvoidポインタからNSLog呼び出しにダンプするための最良の方法は何ですか?
cocos2d-iphone - Cocos2d + Box2d または シマリス
OK、私はここで作ったゲームのiPhoneバージョンを作ろうとしています
x11 - GLUTプログラムのXウィンドウIDを取得していますか?または、XでGLUTプログラムをリモートコントロールする方法は?
X11のGLUTプログラムにキーストロークを送信したいのですが、GLUTプログラムに接続されているX11クライアントが見つかりません。
私はこれを、シマリス2d物理パッケージの最も優れたデモプログラムを使用して行います。
違いはありません。
私の最終的な希望は、次と同等のキーイベントを送信することでGLUTプログラムを制御できることです。
だから私の質問:
- Linux / X11で実行されているGLUTプログラムをリモートコントロールするにはどうすればよいですか?
- GLUTプログラムのX11ウィンドウIDを取得する方法はありますか?