太空射击运动员整理不正常

时间:2016-09-28 16:39:33

标签: c# unity3d unity5

我试图在官方统一网站页面上统一做教程,我有一些疑惑,因为教程有点老了,事情不能正常工作,所以我已经设置了播放器和背景,现在我必须编写脚本来移动播放器并检查x和z轴之间的分割,所以我所做的基本上是使用Math.clamp方法,但是当我设置x轴时,例如, min -6和max 6,它只是在-1和1之间移动z轴同样发生,我不知道它为什么会发生:S

这是代码

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

private Rigidbody rb;
public float velocity;
public float xMin, xMax, zMin, zMax;

void Start () {
    rb = GetComponent<Rigidbody> ();
    velocity = 3.0f;
    xMin = -6.0f;
    xMax = 6.0f;
    zMin = -4.0f;
    zMax = 7.0f;
}

// Update is called once per frame
void FixedUpdate () {
    float xAxis = Input.GetAxis ("Horizontal");
    float zAxis = Input.GetAxis ("Vertical");
    rb.velocity = new Vector3 (xAxis, 0.0f, zAxis) * velocity;
    rb.position = new Vector3 (Mathf.Clamp (xAxis, xMin, xMax), 0.0f, Mathf.Clamp (zAxis, zMin, zMax));
}

}

1 个答案:

答案 0 :(得分:1)

Mathf.Clamp设置值的范围。所以它不会比这些更多或更少。如果您希望值超过-6和+6,只需从检查器中增加xMin,xMax,zMin,zMax值。并且Input.GetAxis的范围在-1到+1之间,所以你不会比这更进一步。因此,尝试将xAxis和zAxis值乘以一些大数。例如10。

void FixedUpdate () 
{
    float xAxis = Input.GetAxis ("Horizontal") * 10;
    float zAxis = Input.GetAxis ("Vertical") * 10;
    rb.velocity = new Vector3 (xAxis, 0.0f, zAxis) * velocity;
    rb.position = new Vector3 (Mathf.Clamp (xAxis, xMin, xMax), 0.0f, Mathf.Clamp (zAxis, zMin, zMax));
}