Skip to content

[Unity] 透過虛擬搖桿讓圖片旋轉

Last Updated on 2021-10-25 by Clay

今天要記錄的,是如何透過虛擬搖桿讓圖片旋轉。虛擬搖桿的設置方法如 [Unity] 簡易虛擬搖桿的設置、與移動物件 這篇文章所介紹。

實際上,要使用虛擬搖桿讓圖片旋轉需要知道以下兩種操作:

  • 如何讓圖片旋轉
  • 取得搖桿位置移動的角度(可以想像成兩向量的夾角)

通常這個功能在 2D 遊戲中,就是為了讓玩家的角色能夠『旋轉方向』。


如何讓圖片旋轉

建立一個 Rotation.cs 的腳本,並掛載在你想要旋轉的圖片上。

using UnityEngine;
using System.Collections.Generic;

public class Rotation : MonoBehaviour {
    private float pr = 0f;

    void Update() {
        transform.localEulerAngles = new Vector3(0, 0, ++pr);
    }
}



Output:

https://clay-atlas.com/wp-content/uploads/2021/06/SnakeEating-GameScene-Android-Unity-2019.4.27f1-Personal_-_DX11_-2021-06-07-11-31-26.mp4

取得搖桿位置移動的角度(可以想像成兩向量的夾角)

首先還是建議按照 [Unity] 簡易虛擬搖桿的設置、與移動物件 這篇文章所紀錄的配置好虛擬按鈕,你會發現程式中的 direction 其實可以視為一組向量。

update() 函式中,我們可以將現在時間點的 direction 和上一個時間點的 direction 都視為向量,並求出兩向量的夾角,再使用前一小節旋轉的程式碼讓圖片旋轉。

不過在 Unity 中,直接使用 Vector2.SignedAngle() 函式便可以順利求出角度了。

float angle = Vector2.SignedAngle(newDirection, oldDirection);



記得要用有號角度進行旋轉,否則你的圖片只會一直順時針或逆時針旋轉。

https://clay-atlas.com/wp-content/uploads/2021/06/SnakeEating-GameScene-Android-Unity-2019.4.27f1-Personal_-_DX11_-2021-06-07-11-51-21.mp4

References


Read More

Tags:

1 thought on “[Unity] 透過虛擬搖桿讓圖片旋轉”

Leave a Reply取消回覆

Exit mobile version