介紹
unity如何用鼠標(biāo)中鍵,控制視角放大、移動?
鼠標(biāo)滑輪滑動視角放大。
鼠標(biāo)滑動按住拖拽,視角移動。
方法
把這個腳本,掛載到主相機(jī)上。文章來源:http://www.zghlxwxcb.cn/news/detail-807196.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ViewController : MonoBehaviour {
public float sizespeed = 1; // 定義了一個名為sizespeed的公共(public)浮點(diǎn)型(float)變量,初始值為1
public float mouseSpeed = 10; // 定義了一個名為mouseSpeed的公共浮點(diǎn)型變量,初始值為10
private Vector3 lastMousePosition; // 定義了一個名為lastMousePosition的私有(private)Vector3類型變量
// Update is called once per frame
void Update () { // 定義了一個名為Update的方法,在每一幀(frame)中被調(diào)用
float mouse = -Input.GetAxis("Mouse ScrollWheel"); // 獲取鼠標(biāo)滾輪的輸入值,并將其賦值給名為mouse的局部(local)浮點(diǎn)型變量
// 鼠標(biāo)中鍵按住拖動
if (Input.GetMouseButton(2)) { // 檢測if語句中的條件是否為真,如果鼠標(biāo)中鍵被按住,則執(zhí)行大括號內(nèi)的代碼塊
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition; // 獲取當(dāng)前鼠標(biāo)位置和上一次鼠標(biāo)位置之間的差值,并將其賦值給名為deltaMousePosition的局部Vector3類型變量
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0); // 將攝像機(jī)的位置向左右和上下移動,移動的距離由鼠標(biāo)的移動距離和鼠標(biāo)速度決定
}
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World); // 將攝像機(jī)的位置向上或向下移動,移動的距離由鼠標(biāo)滾輪的輸入值和大小速度決定
lastMousePosition = Input.mousePosition; // 將鼠標(biāo)當(dāng)前位置賦值給lastMousePosition變量,以便下一幀計(jì)算鼠標(biāo)位置差值
}
}
下面是對該方法的分點(diǎn)總結(jié):文章來源地址http://www.zghlxwxcb.cn/news/detail-807196.html
- 獲取鼠標(biāo)滾輪輸入值:
float mouse = -Input.GetAxis("Mouse ScrollWheel");
- 如果鼠標(biāo)中鍵被按住,則獲取當(dāng)前鼠標(biāo)位置和上一幀鼠標(biāo)位置之間的差值,并將其賦值給名為deltaMousePosition的局部Vector3類型變量:
if (Input.GetMouseButton(2)) {
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition;
}
- 將攝像機(jī)的位置向左右和上下移動,移動的距離由鼠標(biāo)的移動距離和鼠標(biāo)速度決定:
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0);
- 將攝像機(jī)的位置向上或向下移動,移動的距離由鼠標(biāo)滾輪的輸入值和大小速度決定:
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World);
- 將鼠標(biāo)當(dāng)前位置賦值給lastMousePosition變量,以便下一幀計(jì)算鼠標(biāo)位置差值:
lastMousePosition = Input.mousePosition;
- Update方法的完整實(shí)現(xiàn)如下:
void Update () {
float mouse = -Input.GetAxis("Mouse ScrollWheel");
if (Input.GetMouseButton(2)) {
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition;
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0);
}
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World);
lastMousePosition = Input.mousePosition;
}
到了這里,關(guān)于超詳細(xì),unity如何用鼠標(biāo)中鍵控制視角放大、移動的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!