1. 程式人生 > >2D捕魚大戰的槍如何跟著螢幕滑鼠進行移動

2D捕魚大戰的槍如何跟著螢幕滑鼠進行移動

#捕魚大戰遊戲中的槍如何跟著滑鼠進行移動
先上程式碼

`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模式。
在這裡插入圖片描述