【发布时间】:2015-12-31 14:35:08
【问题描述】:
我有两个碰撞问题,当玩家多次按下移动键时,玩家可能会在对象上出现故障,并且玩家的x 和y 移动一旦接触到对象的任何一侧都会停止。它应该只停止x 或y,具体取决于它接触到哪一侧。
当它触及边界框的左/右侧时,它应该仍然能够上下移动。当它接触边界框的顶部/底部时,它应该能够左右移动。
我在 Player 类中的移动代码 ENTER_FRAME:
private function onEnterFrame(event:Event):void
{
_vx = 0;
_vy = 0;
if (isRight)
{
_vx = 5;
}
if (isLeft)
{
_vx = -5;
}
if (isUp)
{
_vy = -5;
}
if (isDown)
{
_vy = 5;
}
x += _vx;
y += _vy;
}
我在 CollisionBase 类 ENTER_FRAME(MovieClips 的基类)中的 hitTestObject 代码:
private function onEnterFrame(event:Event):void
{
if (MovieClip(parent).player.collisionArea.hitTestObject(this))
{
if (MovieClip(parent).player.isLeft)
{
MovieClip(parent).player.x -= MovieClip(parent).player._vx;
}
if (MovieClip(parent).player.isRight)
{
MovieClip(parent).player.x -= MovieClip(parent).player._vx;
}
if (MovieClip(parent).player.isUp)
{
MovieClip(parent).player.y -= MovieClip(parent).player._vy;
}
if (MovieClip(parent).player.isDown)
{
MovieClip(parent).player.y -= MovieClip(parent).player._vy;
}
}
}
FLA 文件:https://www.dropbox.com/s/k5dlxrsnvbrmtke/Subject.zip?dl=0
FLA 文件包括一个播放器和一个可以与之碰撞的床。
【问题讨论】: