c#獲取3D中和2D 即滑鼠點那個位置 當前物體看向對應滑鼠點的位置
阿新 • • 發佈:2018-11-30
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 framevoid Update () { //定義一個角度用來使大炮旋轉相應的角度 float angle; //定義一個世界座標的滑鼠位置 Vector3 mousepos; //api的工具 獲取當前canves的滑鼠位置 RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUItransform, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera,outmousepos); 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中 人物 看向滑鼠點