[UI]スライダーの値を変化させているとだんだん角度が変わり、スライダーの値を0にしても水平に戻らなくなってしまう | Unity Forum | Tech Stadium Forum

[UI]スライダーの値を変化させている...
 
通知
すべてクリア

[UI]スライダーの値を変化させているとだんだん角度が変わり、スライダーの値を0にしても水平に戻らなくなってしまう  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
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にしても水平に戻らなくなってしまします.
どうしてでしょうか.


引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
07/07/2021 6:55 pm  

こんなスクリプトはいかがでしょうか

public void RotateMyObject()
{
float sliderValue = GetComponent<Slider>().value;
ObjectToRotate.transform.rotation = Quaternion.Euler(sliderValue * 360, 0, 90);
}

 


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
07/07/2021 6:56 pm  

回転させたいオブジェクトは,ImageStageですね?

オブジェクトの回転については
transform.rotation = Quaternion.Euler(0, 0, z);

このコードでzの部分をスライダーに合わせて変換させば回転できると思います。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
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だと現在の値に加算されていくという考え方なんですね.


返信引用
共有:
タイトルとURLをコピーしました