闪光朋克碰撞问题

Flashpunk collision troubles

我试图让我的角色与一个锅相撞,但我一直 运行 遇到问题。

我的代码目前是(这是在更新函数中):

        if (collide("Pot",MyWorld.Pot.graphic.x,MyWorld.Pot.graphic.y))
        {
            trace("HUH!?")
            // Player is colliding with a "bullet" type.
        }

它从不追踪 "HUH?!" 即使我去了底池。我什至尝试在 80、80(这是底池的位置)创建我的角色

如果我输入 0,0 就可以,那为什么不能输入 80,80?

锅的碰撞箱是 36x34(它是它的 spritemap 的帧大小)

这是锅的代码(在单独的 class 中)

public class Po 扩展实体 {

[Embed(source = "../img/28x29.png")]

public var PotImage:Class;

public var sprPot:Spritemap = new Spritemap(PotImage,36,34)

public function Po(xP:Number,yP:Number)
{
    sprPot.add("Break",[0,1],2,false)
    graphic = sprPot
    graphic.x = xP
    sprPot.unlock()
    setHitbox(36,34)
    type = "Pot"
    graphic.y = yP
}

}

首先,要更改实体的位置,只需使用其 xy 属性。图形中的 x,y 只是偏移量。

其次,检查碰撞只是做

if (collide("pot", x, y)) trace("killed by pot!");

第二个和第三个参数是坐标 this 放置实体是为了检查碰撞。最常见的情况是你检查实体的新位置,看看它是否与一些障碍物发生碰撞,如果你不把它放在那里。