UIキャンバスボタンを使用して、オブジェクトをポインタで左右に動かしようとしています。しかし、右に移動するスイッチケースだけが実行され、オブジェクトは左に移動しません(ただし、ステートメントは印刷されます)。ユニティゲームのタッチボタン - オブジェクトは左にではなく右に移動する
このコードは左のボタンに関連付けられています。ポインタ上でMoveLeft()が呼び出され、ポインタ上でNoLeft()が呼び出されます(イベントトリガを使用してインスペクタを介して)。 boolean isLeftは、左の動きが発生するかどうかを制御します。
public class LeftButton : MonoBehaviour {
public GameObject playerC;
public void MoveLeft(){
Debug.Log ("Moving left");
playerC.GetComponent<PlayerController>().isLeft = true;
}
public void NoLeft(){
Debug.Log ("Not moving left");
playerC.GetComponent<PlayerController>().isLeft = false;
}
}
以下のコードがプレーヤーに添付されています。これは問題が疑わしい場所です。私は右に動くだけです。ただし、isLeftのログステートメントは印刷されます。
public class PlayerController : MonoBehaviour {
private Rigidbody playerRigidBody;
[SerializeField]
public float movementSpeed;
public bool isLeft;
public bool isRight;
void Start() {
playerRigidBody = GetComponent<Rigidbody>();
}
void FixedUpdate() {
switch (isLeft) {
case true:
print ("Move left is true");
playerRigidBody.MovePosition(transform.position + transform.forward * 0.5f);
break;
case false:
print ("No longer left");
playerRigidBody.MovePosition (transform.position + transform.forward * 0f);
break;
}
switch (isRight) {
case true:
print ("Move right is true");
playerRigidBody.MovePosition (transform.position - transform.forward * 0.5f);
break;
case false:
print ("No longer right");
playerRigidBody.MovePosition (transform.position - transform.forward * 0);
break;
}
}
私は右のボタンに触れてそれを放していない場合でも、「いいえの権利はありません」という文も印刷されます。
UIが左と右の2つのボタンで構成されているのかどうか疑問に思っている場合です。彼らは両方ともお互いに鏡映する独自のスクリプトLeftButton(上記)とRightButtonを持っています。
ご協力いただきありがとうございます。
Worked great。不必要なコードを取り除いた、多くのありがとう! –