2016-04-25 6 views
0

私は、ポンゲームで、両方のパドルをコントロールするようにプレーヤーを許可しようとしています。しかし、何らかの理由で1つのパドルだけが制御可能であり、他のパドルは単純に何もしない。パドルのプロパティバーの画像です。右パドルが一体化のためにポンゲームで動いていない

enter image description here

そしてここで、矢印キーで制御されなければならない一番右のパドルのコードです。

using UnityEngine; 

using System.Collections;

パブリッククラスPaddleRight:MonoBehaviour {

public Vector3 playerPosR; 
public float paddleSpeed = 1F; 
public float yClamp; 
void Start() 
{ 


} 

// Update is alled once per frame 
void Update() 
{ 

    float yPos = gameObject.transform.position.y + (Input.GetAxis("Vertical") * paddleSpeed); 

    if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.UpArrow)) { 
     playerPosR = new Vector3(gameObject.transform.position.x, Mathf.Clamp(yPos, -yClamp, yClamp), 0); 
     print("right padddle trying to move"); 
    } 

    gameObject.transform.position = playerPosR; 
} 

}

私はどこでもそれが移動しない理由..任意のヘルプは、私が持っているので、素晴らしいだろうしてください見つけ出すように見えることはできませんこの時点でどこでもチェックされています。ありがとう!

答えて

1

プロジェクトでこの問題を再現し、唯一の問題は、yClampがパブリックであり、インスペクタで0に設定されていることを忘れている可能性があることがわかりました。 yClampが0の代わりになるように設定してください。

yPosの割り当てを移動し、ifステートメント内の位置を設定することをお勧めします。

public Vector3 playerPosR; 
public float paddleSpeed = 1F; 
public float yClamp; // make sure it's not 0 in the inspector! 

// Update is alled once per frame 
void Update() 
{ 
    if (Input.GetKey(KeyCode.DownArrow) || Input.GetKey(KeyCode.UpArrow)) 
    { 
     float yPos = transform.position.y + (Input.GetAxis("Vertical") * paddleSpeed); 
     playerPosR = new Vector3(transform.position.x, Mathf.Clamp(yPos, -yClamp, yClamp), 0); 
     transform.position = playerPosR; 
    } 
} 
+0

エクセレント:あなたがここにもgameObject.transform.positionへの単なるtransform.position

を変更することができます

は、洗練されたコードです!ありがとう、トン! – Luke

関連する問題