【发布时间】:2018-08-19 23:37:58
【问题描述】:
嘿,大家好久没解决这个问题了我使用 Flash Animate 和 Flash Develop 作为我的 IDE。
我将我的角色player 和平台platforms 动态地添加到舞台上。一切似乎工作正常,除了当我继续跳跃时,角色一次从地板上掉下几个像素,当我再次跳跃时,它会自行纠正,但只是一遍又一遍地重复这种情况。更多信息 角色是静止的,平台正在向他移动。玩家所要做的就是点击跳跃。
这是我添加到舞台的重力和其他对象的变量:
//Movie clips
private var player:mcPlayer;
private var platforms:mcPlatforms;
//Jumping Variables
private var nGravity:Number = -1.8;// Gravity
private var nJumpPow:Number = 0; //Y velocity
//Booleans
private var bJumping:Boolean = false;
//Arrays
private var aPlatformArray:Array;
//Add Character
player = new mcPlayer();
player.x = (stage.stageWidth / 2) - 80;
player.y = (stage.stageHeight / 2) + 78;
addChild(player);
private function addPlatForms():void
{
//Add Obstacle Platforms
platforms = new mcPlatforms();
platforms.x = (stage.stageWidth / 2) - 80;
platforms.y = (stage.stageHeight / 2) + 165;
addChild(platforms);
aPlatformArray.push(platforms);
trace(aPlatformArray.length + " NPLATFORMS");
}
这是我的跳转处理程序,它们在我的 ENTER FRAME 侦听器中:
private function jumpHandler():void
{
//When User taps screen player jumps
if (bJumping) //Jump Up
{
player.y += nJumpPow;
nJumpPow -= nGravity;
}
}
最后是我如何处理碰撞:
private function playerPlatformHandler():void
{
for (var i:int = 0; i < aPlatformArray.length; i++)
{
var currentPlatform:mcPlatforms = aPlatformArray[i];
//If user is not touching platform have character fall down
if (!currentPlatform.hitTestPoint(player.x, player.y, true) && !bJumping)
{
trace("PLAYER NOT TOUCHING PLATFORM");
nJumpPow = -15;
player.y -= nJumpPow;
nJumpPow -= nGravity;
}
// Have character stand on top of platform when lands
if (currentPlatform.hitTestPoint(player.x, player.y, true) && bJumping)
{
bJumping = false; //Jumping is false
}
}
trace("JUMPPOWER " + nJumpPow);
trace("GRAVITY " + nGravity);
}
所以当我跟踪变量时,我看到nJumpPow 每次跳转都会增加和减少,我认为这可能是罪魁祸首,但尝试使用 if 语句来解决这个问题并将其值设置回 0 什么也没做人物的脚仍然从平台上掉下来。
请提供有关如何解决此问题的任何帮助或建议,我们将不胜感激!先感谢您。
【问题讨论】:
-
当玩家落地时,你必须检查玩家是否在地板以下,当它太低时将它向上移动一点。由于它现在每帧移动 15 个像素,因此它可能会移动 15 个像素太低。此外,现在你的重力没有影响,因为你在移动玩家之前总是将
nJumpPow重置为 -15。理想情况下,您会为平台游戏使用不同类型的碰撞检测,请查看谷歌的一些教程。
标签: android actionscript-3 flash