第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Unity 中在最小和最大 X、Y 和 Z 坐標之間移動相機

在 Unity 中在最小和最大 X、Y 和 Z 坐標之間移動相機

C#
繁星點點滴滴 2021-11-14 15:55:38
我正在使用 Unity 制作 3D 游戲,并將使用Z, Q, S,D鍵(我使用 Azerty 鍵盤)和鼠標滾輪來四處移動相機以進行縮放。該escape鍵將切換相機的移動。我會讓我的相機保持在最小和最大區(qū)域內(nèi)。為此,我使用了兩個變量min,max它們是Vector3. 這是 Unity 中的配置Main Camera:這是我的代碼:using UnityEngine;public class CameraController : MonoBehaviour{    [Header("Speeds")]    public float panSpeed = 30;    public float scrollSpeed = 5;    [Header("Movement")]    public bool doMovement = true;    [Header("Min and max values")]    public Vector3 min;    public Vector3 max;    private void Update()    {        if (Input.GetKey(KeyCode.Escape))        {            doMovement = !doMovement;        }        if (doMovement)        {            if (Input.GetKey(KeyCode.Z))            {                Move(Vector3.forward);            }            else if (Input.GetKey(KeyCode.S))            {                Move(Vector3.back);            }            else if (Input.GetKey(KeyCode.Q))            {                Move(Vector3.left);            }            else if (Input.GetKey(KeyCode.D))            {                Move(Vector3.right);            }            float scroll = Input.GetAxis("Mouse ScrollWheel") * 1000;            Vector3 pos = transform.position;            pos.y -= scroll * scrollSpeed * Time.deltaTime;            pos.y = Mathf.Clamp(pos.y, min.y, max.y);            transform.position = pos;        }    }    private void Move(Vector3 direction)    {        Vector3 pos = direction * panSpeed * Time.deltaTime;        pos.x = Mathf.Clamp(pos.x, min.x, max.x);        pos.z = Mathf.Clamp(pos.z, min.z, max.z);        transform.Translate(pos, Space.World); // problem 1         transform.position = pos;              // problem 2    }}問題是當我使用按鍵移動相機時。我已經(jīng)嘗試了兩行不同的代碼,但都不能像方面那樣工作。這是我的問題。用我上面代碼的注釋行。第一行忽略最小值和最大值。第二行設(shè)置相機(0, 10, 0.4970074)在移動時始終開啟。我按下后是這樣的Q:我不會同時使用兩條線。你能找出問題嗎?
查看完整描述

1 回答

?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

第 1 行不起作用,因為transform.Translate它將沿矢量移動對象,而不是朝向某個位置。您的代碼正在以一定速度翻譯對象,并限制速度而不是位置。


第 2 行不起作用,因為將運動矢量分配給位置只會將相機移動到您的矢量值。


嘗試這個:


transform.Translate(direction * panSpeed * Time.deltaTime);  // move object

Vector3 pos = transform.position; // get position as Vector

pos.x = Mathf.Clamp(pos.x, min.x, max.x); // clamp position

pos.z = Mathf.Clamp(pos.z, min.z, max.z);

transform.position = pos; // reassign clamped Vector to position


查看完整回答
反對 回復(fù) 2021-11-14
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號