gpt4 book ai didi

actionscript-3 - 碰撞后玩家速度永远不会变为零?

转载 作者:行者123 更新时间:2023-12-04 06:45:50 25 4
gpt4 key购买 nike

我的碰撞代码应该反转 x 速度并将其降低到三分之一,然后当玩家没有按下“A”或“D”键时,速度应该慢慢降低到零,但是,一旦玩家碰撞速度仅降低到 0.25 到 0.70 之间的小数(根据先前的方向为正或负。)

//Function to determine what to do with keys
function KeyHandler():void{
//A Key Handlers
if(aKeyPressed == true){
if(Math.abs(_vx) < MaxSpeed){
_vx += -6;
}
}
//Player _vx somehow won't hit zero!!!
else if(aKeyPressed == false){
if(_vx < 0){
_vx += 1;
}
}
//D Key Handlers
if(dKeyPressed == true){
if(Math.abs(_vx) < MaxSpeed){
_vx += 6;
}
}
else if(dKeyPressed == false){
if( _vx > 0){
_vx += -1;
}
}
//W Key Handlers
if(wKeyPressed == true){
if(Jumped == false){
_vy = -15;
Jumped = true;
}
}
else if(wKeyPressed == false){

}
}
//Code for Right Collision
if(RightCollision){
while(RightCollision){
Player.x -= 0.1;
RightCollision = false;
if(_boundaries.hitTestPoint((Player.x + (Player.width / 2)), (Player.y - (Player.height / 2)), true)){RightCollision = true;}
}
_vx *= -.33
}
//Code for Left Collision
if(LeftCollision){
while(LeftCollision){
Player.x += 0.1;
LeftCollision = false;
if(_boundaries.hitTestPoint((Player.x - (Player.width / 2)), (Player.y - (Player.height / 2)), true)){LeftCollision = true;}
}
_vx *= -.33
}

最佳答案

注意 abs(-.25) + abs(.7) ~ 1.0

碰撞将速度设置为非整数的值(例如 2 * .33 ~ .7),因此 +/- 1 将跳过 0 而不会落在它上面。

简单的解决方法是将速度保持为整数,这可以通过 Math.floor 来完成。 , 例如。 (考虑到 +/- 速度的差异:floor 只向一个方向移动数字。)

快乐编码。


此外,我不确定 int 是如何产生的type 在 AS3 工作中起作用,这可能值得探索。

关于actionscript-3 - 碰撞后玩家速度永远不会变为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com