簡體   English   中英

如何檢測多邊形上的碰撞

[英]How to detect collision on a polygon

我正在嘗試使用CraftyJS檢測我的播放器(僅一個正方形)和一個多邊形之間的碰撞

// Init Crafty:
Crafty.init();
Crafty.canvas.init();

var AttackPoly = new Crafty.polygon([
    [-8, 6],
    [0, -8],
    [8, -14],
    [16, -8],
    [24, 6]
]);

attackEnt = Crafty.e("AttackRange, 2D, Canvas, Collision, SolidHitBox, Color").attr({x:50, y:50}).collision(AttackPoly);

Crafty.e("2D, Canvas, Color, Fourway, Collision, Tester").attr({
    x: 100,
    y: 60,
    w: 4,
    h: 4
}).color("orange");

Crafty.e("2D, Canvas, Color, Fourway, Collision, Tester").attr({
    x: 100,
    y: 50,
    w: 4,
    h: 4
}).color("orange");

Crafty.e("2D, Canvas, Color, Fourway, Collision, Tester").attr({
    x: 100,
    y: 40,
    w: 4,
    h: 4
}).color("orange");

Crafty("Tester").bind("EnterFrame", function () {
    this.x -= .2
    if (this.hit("AttackRange")) this.color("aqua")

});

命中多邊形的正方形不會改變其顏色。 我想念什么?

小提琴: http : //jsfiddle.net/c3597/32/

我知道了:多邊形必須在邊界矩形內:

Crafty
  .e('AttackRange, 2D, Canvas, Collision, SolidHitBox, Color')
  .attr({x:50, y:50, w: 100, h: 100})
  .collision(new Crafty.polygon([
    [0, 0],
    [100, 50],
    [0, 100]
  ]))
  .color('blue'); 

小提琴: http : //jsfiddle.net/c3597/33/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM