3

エンティティの長方形ではなく、より正確なカスタム形状のコリジョン ボックスを定義することは可能ですか? 可能かどうか、またその方法を教えてください。

4

1 に答える 1

3

もちろんそれは可能であり、可能な解決策は複数あります。

  • Box2D:優れた物理エンジンであり、ImpactJS のプラグインとして利用できます。このプラグインの使用方法については、impactjs.com/documentation/physics-with-box2d で学習できます

ただし、カスタム形状の衝突のみを行いたい場合、Box2D は少し重いです。

  • カスタム エンティティの衝突チェック: ImpactJS は優れたゲーム エンジンであり、そのモジュールを簡単に拡張できます。カスタム エンティティの衝突チェックには、次の 2 つの方法があります。
    • を拡張するig.Game.checkEntitiesと、ゲーム内のすべてのエンティティをループして、希望する方法で衝突をチェックできます。
    • ig.Entity.check私のような怠け者のために、カスタム形状がエンティティの長方形に含まれている場合にのみ、この関数内でエンティティ形状の衝突チェックを行うことができます (エンティティ長方形の衝突が既に発生した後)。

ig.Entity.check例:

MyEntity = ig.Entity.extend({
    customShape: 'circle',
    // custom shape definition...
    customShapeProperties: {radius: 0},
    check: function(other) {
        // custom shape collision check...
        if (...) {
           this.customCheck(other);
        }
    },
    customCheck: function(body) {}
});
// now if all your entities inherit MyEntity,
// they will have customCheck called only when the custom shape collision occur.
于 2014-02-12T15:01:06.533 に答える