Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在actionscript 3中添加重力和墙碰撞?_Actionscript 3_Collision Detection - Fatal编程技术网

Actionscript 3 如何在actionscript 3中添加重力和墙碰撞?

Actionscript 3 如何在actionscript 3中添加重力和墙碰撞?,actionscript-3,collision-detection,Actionscript 3,Collision Detection,我创建了一个脚本,可以让你的角色在各个方向上移动,并伴有墙壁碰撞。如何在y轴上增加重力,使其仍像平台游戏一样工作 我尝试了类似char.y的东西——当它撞到平台上时,如果它只是地板,但所做的只是慢慢地把char带上来,不管它在对象中的什么位置,一旦它到达顶部,它就会疯狂地摇晃 舞台预览: 要做到这一点非常简单,这样做就足够了: // Check if there is a floor below the char if (!floor.hitTestPoint(char.x, char.y +

我创建了一个脚本,可以让你的角色在各个方向上移动,并伴有墙壁碰撞。如何在y轴上增加重力,使其仍像平台游戏一样工作

我尝试了类似char.y的东西——当它撞到平台上时,如果它只是地板,但所做的只是慢慢地把char带上来,不管它在对象中的什么位置,一旦它到达顶部,它就会疯狂地摇晃

舞台预览:


要做到这一点非常简单,这样做就足够了:

// Check if there is a floor below the char
if (!floor.hitTestPoint(char.x, char.y + (char.height/2) + 2 , true)) 
{
    // If not, apply Gravity
    char.y += 5
}
这将只适用于重力,如果没有地板2像素正下方的字符这将停止抖动,请随意尝试不同的像素偏移,这可能会更好地工作在您的情况下,我不知道你是如何区分墙壁和地板,所以用你是如何做的取代“地板”

===============

如果你想添加真实的加速重力,你需要添加一个变量来跟踪当前的垂直速度的字符,然后添加到每个步骤

每一步都要这样做,而不仅仅是增加y

// Apply gravity
vSpeed += 5
char.y += vSpeed

但是如果你要这样做,你可能会开始研究向量和更复杂的东西,网络上有很多关于这方面的资料。

你是如何实现重力的?每一步都是char.y+=g?哦,对不起,我可能对这个主题的措辞不正确。我问的是如何将重力引入到这个系统中。
// Apply gravity
vSpeed += 5
char.y += vSpeed