Unity 실행시 마우스로 카메라 조작 예
개요
Unity 런타임의 마우스에 의한 카메라 조작 예를 기재합니다.
구현
객체 구조
스크립트
using UnityEngine;
public class CtrlView : MonoBehaviour
{
[SerializeField] Transform TargetCam;
[SerializeField] Transform ViewPoint;
[SerializeField] float Angle_Speed = 0.5f;
[SerializeField] float PosXY_Speed = 0.005f;
[SerializeField] float PosZ_Speed = 5;
Vector3 MousePos;
void Update()
{
// マウスの移動量を取得
var diff = MousePos - Input.mousePosition;
MousePos = Input.mousePosition;
if (Input.GetMouseButton(0))
{
// 左クリック(回転)
var tmp = diff;
diff.x = +tmp.y;
diff.y = -tmp.x;
ViewPoint.eulerAngles += diff * Angle_Speed;
}
else if (Input.GetMouseButton(1))
{
// 右クリック(移動)
var tmp = diff;
diff.x = -tmp.x;
diff.y = +tmp.y;
ViewPoint.position += diff * PosXY_Speed;
}
// スクロール(拡縮というか前後)
var scroll = Input.GetAxis("Mouse ScrollWheel");
var pos = TargetCam.localPosition;
pos.z += scroll * PosZ_Speed;
TargetCam.localPosition = pos;
}
}
보충
스크립트는 같은 클래스명으로 파일을 작성해 그대로 copipe 하면, 어딘가 텍트우인 오브젝트에 첨부해, TargetCam에 조작하고 싶은 카메라, ViewPoint에 시점으로 하는 카메라의 부모 오브젝트를 설정하면 그대로 사용할 수 있습니다.
대상을 중심으로 카메라 어떻게 돌리면 좋을까? 라고 생각해 잘 모르는 계산하려고 생각하기도 한 적이 있었습니다만, 카메라를 오브젝트의 아이로 해 오브젝트를 돌리면 좋은 것은 아닌가? 라는 방법이 됩니다.
이용 장면은 많을 것 같은 생각이 듭니다만 기본적 지나? 탓인지, 별로 직구적인 예는 보이지 않기 때문에, 자신용으로서의 메모도 앞으로 기사로 했습니다.
Reference
이 문제에 관하여(Unity 실행시 마우스로 카메라 조작 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/120byte/items/77ba4d83df0a5cecb105
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
객체 구조
스크립트
using UnityEngine;
public class CtrlView : MonoBehaviour
{
[SerializeField] Transform TargetCam;
[SerializeField] Transform ViewPoint;
[SerializeField] float Angle_Speed = 0.5f;
[SerializeField] float PosXY_Speed = 0.005f;
[SerializeField] float PosZ_Speed = 5;
Vector3 MousePos;
void Update()
{
// マウスの移動量を取得
var diff = MousePos - Input.mousePosition;
MousePos = Input.mousePosition;
if (Input.GetMouseButton(0))
{
// 左クリック(回転)
var tmp = diff;
diff.x = +tmp.y;
diff.y = -tmp.x;
ViewPoint.eulerAngles += diff * Angle_Speed;
}
else if (Input.GetMouseButton(1))
{
// 右クリック(移動)
var tmp = diff;
diff.x = -tmp.x;
diff.y = +tmp.y;
ViewPoint.position += diff * PosXY_Speed;
}
// スクロール(拡縮というか前後)
var scroll = Input.GetAxis("Mouse ScrollWheel");
var pos = TargetCam.localPosition;
pos.z += scroll * PosZ_Speed;
TargetCam.localPosition = pos;
}
}
보충
스크립트는 같은 클래스명으로 파일을 작성해 그대로 copipe 하면, 어딘가 텍트우인 오브젝트에 첨부해, TargetCam에 조작하고 싶은 카메라, ViewPoint에 시점으로 하는 카메라의 부모 오브젝트를 설정하면 그대로 사용할 수 있습니다.
대상을 중심으로 카메라 어떻게 돌리면 좋을까? 라고 생각해 잘 모르는 계산하려고 생각하기도 한 적이 있었습니다만, 카메라를 오브젝트의 아이로 해 오브젝트를 돌리면 좋은 것은 아닌가? 라는 방법이 됩니다.
이용 장면은 많을 것 같은 생각이 듭니다만 기본적 지나? 탓인지, 별로 직구적인 예는 보이지 않기 때문에, 자신용으로서의 메모도 앞으로 기사로 했습니다.
Reference
이 문제에 관하여(Unity 실행시 마우스로 카메라 조작 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/120byte/items/77ba4d83df0a5cecb105
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity 실행시 마우스로 카메라 조작 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/120byte/items/77ba4d83df0a5cecb105텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)