2016-09-28 6 views
0

チュートリアルが正式な統一ウェブサイトのページで統一されていて、私はいくつかの疑問があります。すでにプレイヤーとバックグラウンドを設定しているので、プレイヤーを移動させてx軸とz軸のコリジョンをチェックするスクリプトを書く必要があります。そのため、基本的にはMath.clampメソッドを使用していましたが、 Xは、例えば、分-6および最大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

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)); 
} 
関連する問題