我正在创建2D平台游戏 . 我遇到了碰撞问题 . 当我的角色击中站在平台顶部时,它将在那里停留2.5秒,然后通过所有其他平台落到地面 . 我认为必须对我的重力功能和碰撞功能做一些不能正常工作的事情 . 我真的无法想出任何帮助将不胜感激 .
这= fireboy1
这是我的角色类的重力代码:
public var gravity:int = 0;
public var floor:int = 461;
public function adjust():void
{
//applying gravity
this.y += gravity;
if(this.y + this.height <floor)
gravity++;
else
{
gravity = 0;
this.y = floor - this.height;
}
这是我从主类碰撞的代码:
//collision detection of platform1
public function platform1Collision():void
{
if(fireboy1.hitTestObject(Platform1))
{
if(fireboy1.y > Platform1.y)
{
fireboy1.y = Platform1.y + Platform1.height;
}
else
{
fireboy1.y = Platform1.y - fireboy1.height;
}
}
1 回答
您的问题可能是
y
位置每帧递增(无论是否有任何碰撞)一个更好的方法是创建一个游戏循环/输入框架处理程序,而不是为玩家设置一个,每个平台一个等等 . 您还有一些不正确的数学计算玩家相对于平台和楼层的位置 .