問題タブ [box2d-iphone]

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.

0 投票する
0 に答える
1851 参照

ios - cocos2d/box2d のロープ

こんにちは、私は最近 Cocos2d と box2d を試しています。バニーシューターやカット・ザ・ロープなどのゲームのようにロープを引こうとしていますが、リードが得られませんでした。VRopeというクラスを見つけたのですが、使い方がよくわかりません。

私が目指しているのは、ぶら下がっているロープのようなもので、ポイントで切断すると、バニー シューターなどの本物のロープに似たアニメーションが生成されます。これは多くのゲームで見られます。何か考えがある人はいますか?

ヒントや良いチュートリアルのリンクを教えていただければ幸いです。

ありがとうございました

0 投票する
3 に答える
542 参照

objective-c - c++クラスタイプivarを含むobj-cクラスインターフェイスを宣言します

現在、私はcocos2d + Box2Dプロジェクトに取り組んでいるので、いくつかのObjective-C++コードを扱っています。

そして、私はそのような状況に直面しています:

b2Bodyとb2Fixtureは、Box2D.hで定義されたC++クラスです。

BasicNodeの実装の名前がBasicNode.mmの場合に機能します。

しかし、BasicNodeを使用してBasicNode.hをインポートするGame.mという名前の別のファイルがある場合、.mファイルはObj-Cファイルであり、C ++コードを認識していないため、コンパイルされません。

そこで、#import "Box2D.h"を実装ファイルに移動し、型宣言のみをヘッドファイルに保持することにしました(これはまさにヘッダーファイルに含まれるべきものです)。

しかし、どうすればよいですか?これらはC++クラスタイプですが、実際には単なるポインターなので、ヘルパーマクロを作成しました。

これは、CLS_DEF(b2Body)が1回だけ表示される場合にのみ機能します。そうしないと、コンパイラは、同じ名前であっても、同じ名前の複数の型宣言を検出します。私が変更する必要があるより

そして、それは現在機能しています。

しかし、特にARCを使用している場合、C++クラス型をObj-Cクラスとして宣言するのは良い考えではないと思います。

それに対処するためのより良い方法はありますか?そして、私は本当にこのようなものを作りたくありません

編集:また、私の微調整方法で問題が発生するかどうか教えてください?? C ++クラスを作成することにより、ivarは他の純粋なObj-CコードのObj-Cクラスのように見えます。

0 投票する
0 に答える
480 参照

box2d - 体が回転できる運動の方向を計算するBox2D

私のトップダウンの車の物理学では、車の移動方向を見つけようとしています。

車の線形速度を取得できますが、次の理由で問題が発生しています。

  • 車は回転し、あらゆる方向を見ることができます
  • 車は前後に動くことができます

基本的に、車が前進しているか後退しているかを教えてくれるものです!

0 投票する
1 に答える
537 参照

ios - iOS ゲームですべての接続 b2Body を取得する

cocos2d、box2d for iPhoneでiPhoneゲームを開発しています。ここで 1 つの問題があります。 ここに画像の説明を入力

上のスクリーンショットからわかるように、これらのボールは b2Body です。1つのことを除いて、すべてがうまくいきます。ボールをタップすると、画面から削除したいのですが、うまく機能します。

ただし、接続されている同じ色のボールもすべて削除する必要があります。たとえば、下の赤いボールをタップすると、このタップされたボールと交差するすべての赤いボールも削除する必要があります。

このメソッドはタップ位置を管理します

「destroyBall」メソッドは再帰的なメソッドであり、次のように記述されます

アイデアは非常に単純です。ボール A がタップされると、ボール A を打っている他のボールを探します。ボール B がボール B の場合、打球がなくなるまでボール B でプロセスが繰り返されます。

ただし、再帰関数はノンストップで実行されるようです:(

box2d でこの機能を実行するためのアイデアやアルゴリズムをお持ちでしたら、よろしくお願いします。

ご支援ありがとうございました。

タン

0 投票する
2 に答える
1110 参照

cocos2d-iphone - box2dで衝突位置を取得する方法

box2d で衝突点を取得する最良の方法は何ですか? cocos2d と Objective C で使用していますが、API は他の言語でも似ていると思います。b2ContactListener クラスを使用すると b2Contact オブジェクトが生成されますが、接触位置に関する情報が見つかりません。

0 投票する
2 に答える
855 参照

ios4 - cocos2d でシーン中に画面の向きを横向きにロックするにはどうすればよいですか?

iOS アプリの開発に box2d を使用しています。デバイスの向きを cocos2d のデフォルトである横向き左に修正したいと考えています。

ユーザーがプレイ中に画面の向きを変更できないようにするには、どうすれば画面の向きをロックできますか?

0 投票する
1 に答える
3000 参照

cocos2d-iphone - CCSpriteオブジェクトのようなBox2dボディの移動

cocos2dでは、CCSpritesを簡単に操作して、さまざまな方法で移動できます。最も重要なこと-彼らはイージングイン/アウトを持つことができます。ほとんどのゲームでは、これはスムーズな動きなどに適しています。

box2dボディを移動すると、それに接続されているスプライトはbox2d step()の後に更新されます。スプライトを移動してからボディを更新することは、物理フレームワークの目的を完全に無効にするため、ここではオプションではありません。

したがって、私が正常に実装したもう1つのオプションは、スプライトをそれ自体が力学エンティティとして扱うことにより、スプライトの変位、速度、および加速度を計算することです。スプライトでupdate()を呼び出して、キャラクターが移動先などを決定できるようにするたびに、スーパークラスは前の位置と速度も保存します。これらは、PTM_RATIOで除算することにより、box2d準拠の値として保存されます。

FMSpriteと呼ばれるCCSpriteのサブクラス:

次に、「FMSprite」を「FMObject」にサブクラス化しました。これには、b2Bodyなどが格納されています。

体を動かすには、まずスプライトを動かしてその加速度を追跡する必要があります。これにより、スプライトの動きを追跡するために必要な力(質量を使用)を見つけることができます。オブジェクトのスプライト(ボディに同期している)を移動できないため、「ビーコン」と呼ばれる別のスプライトを作成し、それを子としてオブジェクトに追加して、移動します。次に行う必要があるのは、前述の力を使用して、box2dボディの位置をこのビーコンスプライトと同期させる機能を用意することです。

その結果、b2bodyの動きが素晴らしく、スムーズに動き、自分の力で遊ぶことなく、CCSpriteの動きをコピーして、その動きを複製することができます。すべての力であるため、他のb2Bodyオブジェクトと衝突するときにジッターや歪みが発生することはありません。他にこれを行う方法がある場合は、回答を投稿してください。ありがとう!

0 投票する
1 に答える
2274 参照

ios - Box2Dで凹多角形を描画し、他の形状との衝突を検出する方法はありますか?

私はBox2D物理エンジンの初心者です。不規則な曲線の画像があるので、ポリゴンを作成しようとしています。しかし、Vertex Helperを使用したRaywenderlichデモチュートリアルを参照すると、ポリゴンを描画していますが、多くの場合、凹多角形が生成され、プロジェクトを実行するとクラッシュします。ポリゴンそれは素晴らしいでしょう。

ヘルプや提案をいただければ幸いです。ありがとう

0 投票する
1 に答える
403 参照

cocos2d-iphone - ほぼ0の厚さのbox2d iphoneのボディとして線(エッジ)を設定します

ほぼ 0 または 1 ピクセルの太さの box2d ボディとして線を追加しようとしています。setasedge、setasbox などの多くのメソッドを使用しようとしましたが、取得できませんでした。

b2EdgeShape の場合、存在しないことが示されています。box2d 参照 API にあるように含めました。ほぼゼロの太さの線を描くアイデアを教えてください。

0 投票する
2 に答える
2586 参照

cocos2d-iphone - Box2dオブジェクトを所定のパスに沿って作成する

特定のオブジェクト(box2dボディとしてモデル化)が固定パスをたどる必要があるゲームを作成しています。パス座標を指定して、dtごとにオブジェクトをその上に進める方法はありますか?

ありがとう