質問: this.gameObject.transform.rotation * new Vector3(0, 0, FB); //左右 if (FB != 0f) { this.gameObject.transform.Rotate(0, (FB > 0) ? LR : -LR, 0); } } } ```
回答: 要するに、自分の頭をジョイスティックに見立てて操作する、ということですね。 ただ、角度を正しく求める、という部分に問題があるように見えます。 オイラー角(localEulerAngles)は、3つ揃って意味があるので、1つだけ取り出すということをしてはいけません。 なぜなら、回転としては等しいのに、オイラー角のx,y,zが異なる事があるからです。 要は、x軸を中心に45度回転させても、x=45ではない値になることがあります。 そこで、角度を求めたいときは、基準となるベクトルを回転させて、 基準ベクトルとの角度を求めることで対応します。 具体的にはこんな感じです。 ``` var localup = transform.rotation * Vector3.up; var frontangle = Mathf.Atan2(localup.y, localup.z) * Mathf.Rad2Deg; var sideangle = Mathf.Atan2(localup.y, localup.x) * Mathf.Rad2Deg; ``` 後は、頻繁に動くと鬱陶しいので遊びをつける(少しだけなら傾けても移動や回転をしないようにする)とか 一定角度以上は1以上にならない、などをつければいいと思います