所以我試圖通過用滑鼠拖動來移動相機并且它可以作業,但是每次我再次開始拖動時,相機都會重置為 0、0,我不明白為什么。這是腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class CameraMovement : MonoBehaviour
{
Camera cam;
Vector2 mouseOffset;
Vector2 dragOffset;
Vector3 mousePosition;
Vector3 mousePixPos;
void Start()
{
cam = Camera.main;
}
void Update()
{
//From Mouse Position in Pixel to Worldposition
mousePixPos = Input.mousePosition;
mousePixPos.z = cam.nearClipPlane;
mousePosition = cam.ScreenToWorldPoint(mousePixPos);
if (Input.GetMouseButtonDown(2))
{
mouseOffset = new Vector2(mousePosition.x - transform.position.x, mousePosition.y - transform.position.y);
}
if (Input.GetMouseButton(2))
{
dragOffset = new Vector2(mousePosition.x - mouseOffset.x, mousePosition.y - mouseOffset.y);
transform.position = new Vector3(transform.position.x - dragOffset.x, transform.position.y - dragOffset.y, -10);
}
}
}
MouseOffset 是滑鼠距離相機的偏移量,意思是游戲螢屏的中間。dragOffset 是滑鼠相對于之前設定的 MouseOffset 的偏移量。請幫忙
uj5u.com熱心網友回復:
嘗試這個
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class CameraMovement : MonoBehaviour
{
Camera cam;
Vector2 dragOffset;
Vector3 mousePosition;
Vector3 mousePixPos;
Vector3 mouseStartPos;
Vector3 myStartPos;
void Start()
{
cam = Camera.main;
}
void Update()
{
//From Mouse Position in Pixel to Worldposition
mousePixPos = Input.mousePosition;
mousePixPos.z = cam.nearClipPlane;
mousePosition = cam.ScreenToWorldPoint(mousePixPos);
if (Input.GetMouseButtonDown(2))
{
mouseStartPos = mousePixPos;
myStartPos = transform.position;
}
if (Input.GetMouseButton(2))
{
dragOffset = new Vector2(mousePixPos.x - mouseStartPos.x, mousePixPos.y - mouseStartPos.y);
transform.position = new Vector3(myStartPos.x - dragOffset.x, myStartPos.y - dragOffset.y, myStartPos.z);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/521514.html
標籤:unity3d视觉工作室 2022
