2D捕魚大戰的槍如何跟著螢幕滑鼠進行移動
阿新 • • 發佈:2018-11-25
#捕魚大戰遊戲中的槍如何跟著滑鼠進行移動
先上程式碼
`using UnityEngine;
public class Rotated : MonoBehaviour {
public RectTransform UGUICanvas;
public Camera mainCamera;
// Update is called once per frame void Update () { Vector3 mousePos; RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUICanvas, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera, out mousePos); //!!!這裡我把World寫成local所以出現了語義錯誤,所以編譯器一直顯示不能把out vector3轉換成vector2 float z; if(mousePos.x > transform.position.x) //判斷槍口轉左邊還是轉右邊 { z = -Vector3.Angle(Vector3.up, mousePos - transform.position); //獲取滑鼠和槍中心的連線,槍口所指位置的夾角 //Vector3.Angle(A.posion,B.position); //Vector3.Angle這個則是計算A點與B點以世界座標原點為夾角的角度 // Vector3.up 是物體自身的綠色軸向(Y軸)在世界座標中所指向的位置。 //mousePos - transform.position是滑鼠所在向量減去槍中心點所得的線 } else { z = Vector3.Angle(Vector3.up, mousePos - transform.position); } transform.localRotation = Quaternion.Euler(0, 0, z); }
}`
將螢幕空間上的點轉換為位於給定RectTransform平面上的世界空間中的位置。cam引數應該是與螢幕點相關的相機,我這邊用的maincamera。對於Canvas設定為“Screen Space - Overlay mode”模式的情況,cam引數應該為null,不過捕魚大戰我用的Screen Space - camera模式。