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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)