介紹
2d平面unity,鼠標(biāo)點(diǎn)擊某個(gè)位置,人物角色朝這個(gè)方向移動(dòng)
方法
using UnityEngine;
public class MoveToClickPoint : MonoBehaviour
{
public float speed = 5f; // 角色速度
void Update()
{
if (Input.GetMouseButtonDown(0)) {
// 鼠標(biāo)左鍵點(diǎn)擊
Vector3 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 獲取鼠標(biāo)點(diǎn)擊位置
clickPosition.z = 0; // 將z軸設(shè)為0(2D平面)
transform.LookAt(clickPosition); // 角色朝向點(diǎn)擊位置
transform.Translate(Vector3.forward * speed * Time.deltaTime); // 角色向前移動(dòng)
}
}
}
屏幕坐標(biāo)為什么要轉(zhuǎn)化成相機(jī)坐標(biāo)?
如果我們沒(méi)有將鼠標(biāo)點(diǎn)擊位置轉(zhuǎn)換為世界坐標(biāo)系中的位置,而是直接將屏幕坐標(biāo)系中的位置作為角色移動(dòng)的目標(biāo)位置,那么可能會(huì)發(fā)生以下兩種情況:
-
角色會(huì)偏離目標(biāo)位置
由于屏幕坐標(biāo)系中的位置和世界坐標(biāo)系中的位置具有不同的尺度和坐標(biāo)系,因此如果我們直接使用屏幕坐標(biāo)系中的位置作為目標(biāo)位置,那么角色移動(dòng)時(shí)可能會(huì)偏離該位置。 -
角色會(huì)移動(dòng)到意外的位置
如果我們使用屏幕坐標(biāo)系中的位置作為目標(biāo)位置,那么角色可能會(huì)移動(dòng)到預(yù)想之外的位置。這是因?yàn)槠聊蛔鴺?biāo)系中的位置是相對(duì)于屏幕左下角的,而不是相對(duì)于游戲場(chǎng)景中的某個(gè)位置的。因此,如果我們直接使用屏幕坐標(biāo)系中的位置作為目標(biāo)位置,那么角色可能會(huì)移動(dòng)到屏幕左下角附近,而不是我們期望的位置。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-735200.html
因此,我們需要將屏幕坐標(biāo)系中的位置轉(zhuǎn)換為世界坐標(biāo)系中的位置,以確保角色能夠正確地移動(dòng)到我們期望的位置。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-735200.html
到了這里,關(guān)于2d平面unity,鼠標(biāo)點(diǎn)擊某個(gè)位置,人物角色朝這個(gè)方向移動(dòng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!