Flash actionscript 3,按键碰撞检测
Flash actionscript 3, collision detection upon keypress
我试图让我的角色与我创建的墙发生碰撞,但我在这样做时遇到了困难,我尝试在其他线程中使用解决方案,但 none 奏效了。请帮助。本质上我让碰撞检测工作,但它只在点击鼠标事件时激活。
square1_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(e: MouseEvent): void {
e.target.startDrag();
}
function drop(): void {
head_mc.x -= velocity;
stopDrag();
if (head_mc.hitTestObject(square2_mc)) {
velocity = 0;
trace("Collision detected!");
} else {
trace("No collision.");
velocity = 5;
}
}
我想做的是,让我的玩家模型 head_mc
在与我的墙 square_mc
碰撞时停止向右移动。它仅在我单击对象时有效,我需要它通过仅使用箭头键将 head_mc
移动到块来工作。
您只能在点击时检测到碰撞,因为您将 hitTestObject
放在一个 MouseEvent
函数中。您可以做的是,不是在 MOUSE_UP
和 MOUSE_DOWN
上测试碰撞,而是通过使用 TimerEvent
或直接通过 [=16= 调用函数,以频繁的时间间隔测试碰撞].这样,程序将在很短的时间间隔后继续检查碰撞,因此,当检测到碰撞时,该函数可以追踪 trace("Collision detected!");
并且每一秒它都没有碰撞,它将继续追踪 trace("No collision.");
并且您的速度将设置为 5。
您可以这样添加函数:
function checkCollision(e: Event): void {
if (head_mc.hitTestObject(square2_mc)) {
velocity = 0;
trace("Collision detected!");
} else {
trace("No collision.");
velocity = 5;
}
}
stage.addEventListener(Event.ENTER_FRAME, checkCollision);
我试图让我的角色与我创建的墙发生碰撞,但我在这样做时遇到了困难,我尝试在其他线程中使用解决方案,但 none 奏效了。请帮助。本质上我让碰撞检测工作,但它只在点击鼠标事件时激活。
square1_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, drop);
function drag(e: MouseEvent): void {
e.target.startDrag();
}
function drop(): void {
head_mc.x -= velocity;
stopDrag();
if (head_mc.hitTestObject(square2_mc)) {
velocity = 0;
trace("Collision detected!");
} else {
trace("No collision.");
velocity = 5;
}
}
我想做的是,让我的玩家模型 head_mc
在与我的墙 square_mc
碰撞时停止向右移动。它仅在我单击对象时有效,我需要它通过仅使用箭头键将 head_mc
移动到块来工作。
您只能在点击时检测到碰撞,因为您将 hitTestObject
放在一个 MouseEvent
函数中。您可以做的是,不是在 MOUSE_UP
和 MOUSE_DOWN
上测试碰撞,而是通过使用 TimerEvent
或直接通过 [=16= 调用函数,以频繁的时间间隔测试碰撞].这样,程序将在很短的时间间隔后继续检查碰撞,因此,当检测到碰撞时,该函数可以追踪 trace("Collision detected!");
并且每一秒它都没有碰撞,它将继续追踪 trace("No collision.");
并且您的速度将设置为 5。
您可以这样添加函数:
function checkCollision(e: Event): void {
if (head_mc.hitTestObject(square2_mc)) {
velocity = 0;
trace("Collision detected!");
} else {
trace("No collision.");
velocity = 5;
}
}
stage.addEventListener(Event.ENTER_FRAME, checkCollision);