如何在 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 查看文档以便更好地理解。
我有一个物体放在地上。 当我按下 "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 查看文档以便更好地理解。