【发布时间】:2014-03-16 12:59:42
【问题描述】:
我正在制作的游戏中有此代码:
override public function update():void
{
var pressed:Boolean = false;
if (collide("ground", x, y))
{
trace("COLLISION");
}
if (Input.check(Key.LEFT))
{
xSpeed -= power;
pressed = true;
}
if (Input.check(Key.RIGHT))
{
xSpeed += power;
pressed = true;
}
if (collide("ground", x, y + 1))
{
onTheGround = true;
ySpeed = 0;
if (Input.check(Key.UP))
{
ySpeed -= jumpPower;
}
} else {
ySpeed += gravity;
}
if (Math.abs(xSpeed) < 1 && !pressed)
{
xSpeed = 0;
}
xSpeed *= hFriction;
ySpeed *= vFriction;
adjustXPosition();
adjustYPosition();
}
然后我在这个类生成的地图上有一些图块:
public class Level1 extends Entity
{
private var _tiles:Tilemap;
private var _grid:Grid;
public function Level1()
{
_tiles = new Tilemap(Assets.SPRITE_TILESET, 1920, 1080, 120, 120);
graphic = _tiles;
layer = 1;
_tiles.setRect(0, 0, 1920 / 120, 1080 / 120, 1);
_tiles.setRect(0, 17, 1920 / 120, 1, 0);
_grid = new Grid(1920, 1080, 120, 120, 0, 0);
mask = _grid;
_grid.setRect(0, 17, 1920 / 120, 1, true);
type = "ground";
}
}
但是当玩家接触地面时,并没有检测到碰撞!而玩家只是跌倒了!这是什么错误?我以为“类型”会让它起作用,但我想我错了..
【问题讨论】:
标签: actionscript-3 types entity collision tile