1. 程式人生 > >c#獲取3D中和2D 即滑鼠點那個位置 當前物體看向對應滑鼠點的位置

c#獲取3D中和2D 即滑鼠點那個位置 當前物體看向對應滑鼠點的位置

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChangeBarrel : MonoBehaviour {
    //炮身旋轉
    public  RectTransform UGUItransform;
    public Camera mainCamera;
    
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
void Update () { //定義一個角度用來使大炮旋轉相應的角度 float angle; //定義一個世界座標的滑鼠位置 Vector3 mousepos; //api的工具 獲取當前canves的滑鼠位置 RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUItransform, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera,out
mousepos); Vector3 dirMouse = mousepos - transform.position; //計算角度 angle = Vector3.Angle(Vector3.up,dirMouse); //判斷此時的X座標有利於判斷此時應該旋轉的方向 if (mousepos.x > transform.position.x) { angle = -angle; } transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0
, 0, angle), 5f); }

//這是在2D中 看向目標點 遊戲列如 捕魚達人 大炮看滑鼠點
 //定義一個射線  _cam是定義的主攝像機  攝像機找到對應的點 當前人物看向那個點
            Ray ray = _cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 100, 1 << 8))
            {
                Vector3 posVector3 = new Vector3(hit.point.x, transform.position.y, hit.point.z);
                posVector3 = posVector3 - transform.position;
                transform.rotation = Quaternion.LookRotation(posVector3);
            }
//3D中 人物 看向滑鼠點