如何在Unity5.3中使用Hoerizontal和Vertical进行GetAxis

时间:2016-03-03 03:02:29

标签: c# unity3d unityscript unity5

我从基础开始,并在Unity网站和youtube频道上关注Unity官方教程。 我想用Axis x,y,z在飞机上滚动球但是如下面的代码我的球只转移到-y它不会在舞台上移动它只是沿着Y轴下降(-42.83892)。

这是代码

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

    private Rigidbody rb;
    public float speed;

    void Start() {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate() {

        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");
        Vector3 movement = new Vector3(moveHorizontal, 0.1f, moveVertical);
        rb.AddForce(movement*speed);


    }
}

这是 Ground 的选项  enter image description here

这是播放器 2]

的选项

2 个答案:

答案 0 :(得分:1)

好像你没有将Rigidbody组件附加到你的球体上。添加它并取消选中“使用重力”复选框。

正如斯科特在下面提到的那样,你必须取消选中“ Is触发器”。通过检查两者是触发器,“使用重力”会导致你面临的问题

但将来你需要使用它。

显然,你的Inspector必须看起来像这样

enter image description here

最好关注Roll a Ball

上的Unity官方教程

编辑:您必须取消选中 IS TRIGGER 框,然后选中 USE GRAVITY 框。如果你检查它都跌倒了

答案 1 :(得分:1)

更新:哦,我看到了你的问题。

Vector3 movement = new Vector3(moveHorizontal, 0.1f, moveVertical);

每一帧你的球上都会增加0.1垂直力。不要这样做,只要保持中间属性为0,否则会让你的球飞起来,因为它会不断增加球的力量。

你让你的对撞机有一个&#34;触发器对撞机&#34;这意味着它没有&#34;击中&#34;其他对象,而只是通过它。确保 取消选中 &#34; Is Trigger&#34;玩家和游戏场上都有框。

enter image description here

这应该是这样的:

播放器:
[enter image description here

接地:
enter image description here