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:
取得搖桿位置移動的角度(可以想像成兩向量的夾角)
首先還是建議按照 [Unity] 簡易虛擬搖桿的設置、與移動物件 這篇文章所紀錄的配置好虛擬按鈕,你會發現程式中的 direction 其實可以視為一組向量。
在 update()
函式中,我們可以將現在時間點的 direction 和上一個時間點的 direction 都視為向量,並求出兩向量的夾角,再使用前一小節旋轉的程式碼讓圖片旋轉。
不過在 Unity 中,直接使用 Vector2.SignedAngle()
函式便可以順利求出角度了。
float angle = Vector2.SignedAngle(newDirection, oldDirection);
記得要用有號角度進行旋轉,否則你的圖片只會一直順時針或逆時針旋轉。
References
- https://docs.unity3d.com/ScriptReference/Vector2.SignedAngle.html
- https://stackoverflow.com/questions/51471841/rotate-2d-sprite-with-virtual-joystick
請問現在時間點的向量和上個時間點的向量分別在哪