如何在特定的XYZ Unity 3D上制作RigidBody 2D Jump

时间:2016-05-24 18:57:43

标签: c# unity3d

我一直在谷歌搜索一周,但我仍然没有找到一个东西。我需要的是,在x点击此平台后,Character(Cat)必须跳到平台上。没有动作,只有自动跳跃。

这是应该做的最后一件事。

2 个答案:

答案 0 :(得分:1)

你可以通过向其刚体添加速度来使猫跳跃。 至于点击平台,请向其添加Box Collider 2D。然后将此脚本添加到平台。

//after the using statements
public GameObject cat; //set this in the inspector by dragging the cat into the variable slot
int clickedAmount = 5;//times it takes to click before the cat jumps
float jumpForce = 10.0f

OnMouseDown() {
    clickedAmount -= 1
    if (clickedAmount == 0) {
         cat.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f,jumpForce));
    }
}

如果猫似乎没有跳跃,请确保增加jumpForce变量。

答案 1 :(得分:0)

我注意到你的评论,说你希望它在rpgs中你点击一个位置,然后你的香椿移动到那里。如果这与您想要的类似,那么您可以采用几种不同的方式。你可以做点什么

public GameObject cat;
int clickedAmount = 5;

OnMouseDown() {
   clickedAmount -= 1;
   if (clickedAmount <= 0){
       cat.GetComponent<CatControllerScript>().moveToTarget = transform; //Give the cat script the transform of this platform
   } 
}

然后在cat脚本中执行类似

的操作
public Transform moveToTarget;
public float moveSpeed;
void Update(){
    if (moveToTarget != null){
        //one way is
       transform.position = Vector3.MoveTowards(transform.position, moveToTarget.position, moveSpeed * Time.deltaTime);
        //Another way is 
        transform.position = Vector3.Slerp(transform.position, moveToTarget.position,  moveSpeed * Time.deltaTime);
    }}

然后可以检查碰撞,如果碰撞变换,则使moveToTarget = null。或者你可以制作一个改变的bool,然后单独传递变换。

希望这有帮助!