如何在 unity 3d 中为对象制作类似跳跃的效果?

How to make a jump like effect for object in unity 3d?

我有一个物体放在地上。 当我按下 "space" 键时,它必须跳起来并倒在地上。 为了让它掉下来,我正在使用刚体重力。 我将它连接到地面的 boxcollider 以便它可以检测到 何时分别通过 OnTriggerEnter() 和 OnTriggerExit() 在地面和空中。 代码如下:-

#pragma strict

var jumping:boolean=false;//when the body is in air that is still jumping
var grounded:boolean=true;//laid on ground
var body: Rigidbody;
function Start () 
{
body = GetComponent.<Rigidbody>();
}

function Update () {


if(Input.GetKey("up")){transform.Translate(-3*Time.deltaTime,0,0);}
if(Input.GetKey("left")){transform.Translate(0,0,-3*Time.deltaTime);}

if(Input.GetKey("right")){transform.Translate(0,0,3*Time.deltaTime);}

if(Input.GetKey("down")){transform.Translate(3*Time.deltaTime,0,0);}

if(Input.GetKey("space"))
{
jumping=true;
if(grounded && jumping)
{
body.AddForce(transform.up*5);
}
}
}


//On the ground
function OnTriggerEnter()
{
grounded=true;jumping=false;
body.useGravity=false;
}
//On the  ground
function OnTriggerStay()
{
body.useGravity=false;
grounded=true;jumping=false;
}
//jumping
function OnTriggerExit()
{
body.useGravity=true;
grounded=false;jumping=false;
}

但是它不是在跳,而是在上面不停地往上掉。即使 useGravity 变为 false,它仍会继续下降。

我的代码有什么问题?

提前致谢。

问题出在 ForceMode 上。你没有定义它,所以它默认为 Force 但你需要 Impulse 来实现类似跳跃的效果。

Here's a link 查看文档以便更好地理解。