【发布时间】:2018-10-09 01:40:21
【问题描述】:
可以吗?
这是我跳跃的代码:
void FixedUpdate(){
if(!takingDamage){
float move = Input.GetAxis("Horizontal");
body.velocity = new Vector2(move * speed, body.velocity.y);
if (jumping){
body.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
onGround = false;
}
}
}
我已经尝试过调整重力,降低速度,增加质量......我所做的一切减少距离的操作也会降低高度,但高度正好在我想要的位置......
解决方案是在设置水平速度并降低附加速度时检查角色是否在地面上,以下是该更改的逻辑:
void FixedUpdate(){
if(!takingDamage){
float move = Input.GetAxis("Horizontal");
if(onGround){
body.velocity = new Vector2(move * speed, body.velocity.y);
} else {
body.velocity = new Vector2(move * (speed * 0.7f), body.velocity.y);
}
if (jumping){
body.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
onGround = false;
}
}
}
【问题讨论】:
标签: unity3d