通知
すべてクリア
07/07/2021 6:54 pm
現在UIの課題に取り組んでおります.以下質問になります.
スライダーに合わせてオブジェクトを回転させようと以下のスクリプト作成しました.
public class StageController : MonoBehaviour
{
public GameObject stage;
public void OnChangeValue(float value)
{
Debug.Log(value);
stage.transform.Rotate(new Vector3(0,0,value));
}
}
しかしスライダーの値を変化させているとだんだん角度が変わり,スライダーの値を0にしても水平に戻らなくなってしまします.
どうしてでしょうか.
07/07/2021 6:55 pm
こんなスクリプトはいかがでしょうか
public void RotateMyObject()
{
float sliderValue = GetComponent<Slider>().value;
ObjectToRotate.transform.rotation = Quaternion.Euler(sliderValue * 360, 0, 90);
}
07/07/2021 6:56 pm
回転させたいオブジェクトは,ImageStageですね?
オブジェクトの回転については
transform.rotation = Quaternion.Euler(0, 0, z);
このコードでzの部分をスライダーに合わせて変換させば回転できると思います。
07/07/2021 6:57 pm
教えていただいたコードで回転しました.
stage.transform.rotation = Quaternion.Euler(0, 0, value);
自分で考えた際は以下のコードで回転させました.
Vector3 worldAngle = stage.transform.eulerAngles;
stage.transform.Rotate(new Vector3(0, 0, value - worldAngle.z));
routationは代入になり,Rotateだと現在の値に加算されていくという考え方なんですね.