Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn)
本文實(shí)例為大家分享了Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn)的具體代碼,供大家參考,具體內(nèi)容如下
代碼如下:
using UnityEngine;
public class GunFollowMouse : MonoBehaviour {
public RectTransform UGUICanvas;
public Camera mainCamera;
//攝像機(jī)旋轉(zhuǎn)的緩動(dòng)速率
private float rotateSpeed = 5;
void Start () {
}
void Update () {
//定義一個(gè)世界坐標(biāo)的鼠標(biāo)點(diǎn)
Vector3 mousePos;
//獲取當(dāng)前canvas下鼠標(biāo)的二維坐標(biāo)點(diǎn) 轉(zhuǎn)化為三維 out出來
RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUICanvas,
new Vector2(Input.mousePosition.x, Input.mousePosition.y),
mainCamera, out mousePos
);
//炮臺(tái)的旋轉(zhuǎn)角度
float angle;
//向量dirMouse為鼠標(biāo)的向量減去槍的起始向量得到槍到鼠標(biāo)位置的方向向量
Vector3 dirMouse = mousePos - transform.position;
angle = Vector3.Angle(dirMouse, Vector3.up);//直接得到兩個(gè)向量之間的夾角,這個(gè)角度是沒有正負(fù)的
if (mousePos.x > transform.position.x)
{
angle = - angle;
}
transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, angle)
, Time.deltaTime * rotateSpeed);
}
}
旋轉(zhuǎn)效果如下圖:


以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# char[]與string byte[]與string之間的轉(zhuǎn)換詳解
在本篇文章里小編給大家分享的是關(guān)于C# char[]與string byte[]與string之間的轉(zhuǎn)換的知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下2019-11-11
Unity實(shí)現(xiàn)繞任意軸任意角度旋轉(zhuǎn)向量
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)繞任意軸任意角度旋轉(zhuǎn)向量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C#實(shí)現(xiàn)的字符串轉(zhuǎn)MD5碼函數(shù)實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)的字符串轉(zhuǎn)MD5碼函數(shù),結(jié)合簡(jiǎn)單實(shí)例形式分析了C#字符串的轉(zhuǎn)換、遍歷、加密等操作技巧,需要的朋友可以參考下2016-07-07
C#實(shí)現(xiàn)動(dòng)態(tài)加載dll的方法
這篇文章主要介紹了C#實(shí)現(xiàn)動(dòng)態(tài)加載dll的方法,涉及針對(duì)動(dòng)態(tài)鏈接庫的靈活操作技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
C# 中的GroupBy的動(dòng)態(tài)拼接問題及GroupBy<>用法介紹
這篇文章主要介紹了C# 中的GroupBy的動(dòng)態(tài)拼接問題,在文章給大家提到了C# List泛型集合中的GroupBy<>用法詳解,需要的朋友可以參考下2017-12-12

