【发布时间】:2014-05-20 23:08:16
【问题描述】:
所以我目前正在尝试做一个几乎像迷宫一样的游戏。 问题在于墙壁碰撞,一旦角色撞到墙壁,我就无法再将他弄出来,无论我在碰撞后尝试将他带向哪个方向,他都会“卡住”。 我想的解决方案之一是每当角色撞到墙上时,“支持他”,这样就不会再检测到碰撞。然而,当我这样做时,他以一种奇怪的方式穿过墙壁。 这是我的代码,所以你们可以知道我在做什么:
function keyPressed(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftArrow = true;
if(char.hitTestObject(test))
{
leftHit= true;
} else {
leftHit = false;
}
}
if (event.keyCode == Keyboard.RIGHT)
{
rightArrow = true;
if(char.hitTestObject(test))
{
rightHit= true;
} else {
rightHit = false;
}
}
}
function keyReleased(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
leftArrow = false;
}
if (event.keyCode == Keyboard.RIGHT)
{
rightArrow = false;
}
}
function walking(event:Event):void {
if (rightArrow) {
if(rightHit)
char.x -= speed;
else
char.x += speed;
}
if (leftArrow) {
if(leftHit)
char.x += speed;
else
char.x -= speed;
}
}
这段代码的很大一部分实际上是从另一个问同样问题的人那里得到的。即使按照其他主题中的建议进行操作,问题仍然存在。 非常感谢您的帮助!
【问题讨论】:
-
你的速度值是否在帧与帧之间保持一致?还是基于自上一帧以来经过的时间?
-
帧与帧一致。它基本上是一个常数,我将它的值保留为 10。
标签: actionscript-3 flash collision-detection collision maze