質問: 0; ┃ } ━┛ } ``` オブジェクトのRotateのZだけを0にする簡単な方法があればそれでいいです。 具体的に(?)言えば、transform.Rotate(X, Y, Z)のZだけをいじくる方法があればお願いします
回答: Zを0に固定する方法は以下の通りです。 ``` void Update() { float hor = rotatespeed * Input.GetAxis("Mouse X"); float ver = rotatespeed * Input.GetAxis("Mouse Y"); transform.Rotate(-ver, hor, 0); transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0f); } ``` 回答としては上記の通りですが、記載のソースに数点ツッコミを入れたいです。 1) ソース内に解説を入れておりますが、正直コメントで記載した方がよかったかなと思います。 (ソースをコピペして確認する際に手間がかかったので) また、わざわざ解説を入れているということは、元のソースコードのコメントは無いということだと思います。 「このくらいならコメントしなくても後で分かる」なら問題ないですが、ずっと覚えている自信が無ければ、コメントを記載しておきましょう。 2) ``` float rotatez = transform.localEulerAngles.z; // (1) // ...(中略) if (z0 == false) { rotatez = 0; // (2) } ``` (1)で値をrotatezに入れているのですが、これを(2)でrotatezの値を変えてもtransform.localEulerAngles.zはまったく変わりません。 (1)は参照を渡しているわけではなく、あくまで値のコピーです。 3) ``` bool z0 = false; if (rotatez == 0) { z0 = true; } if (z0 == false) { rotatez = 0; } ``` 上記ですが、以下のようにすれば、z0を用意する必要はありません。 ``` if (rotatez != 0) // rotatezが0以外 { rotatez = 0; } ```