• 【转】摄像机漫游脚本


      1 //-----------------------------------------------------------------  
      2 //1,把本类作为一个组件,包含在 GameObject 中。  
      3 //2,左手坐标系。  
      4 //-----------------------------------------------------------------  
      5 using System.Collections;
      6 using System.Collections.Generic;
      7 using UnityEngine;
      8 //-----------------------------------------------------------------  
      9 public class CameraControl : MonoBehaviour
     10 {
     11     public float moveSpeed = 8.0f;
     12     public float rotateSpeed = 0.05f;
     13 
     14 
     15     public static Vector3 kUpDirection = new Vector3(0.0f, 1.0f, 0.0f);
     16 
     17 
     18     //控制摄像机旋转的成员变量。  
     19     private float m_fLastMousePosX = 0.0f;
     20     private float m_fLastMousePosY = 0.0f;
     21     private bool m_bMouseRightKeyDown = false;
     22 
     23 
     24     //-----------------------------------------------------------------  
     25     void Start()
     26     {
     27 
     28 
     29     }
     30     //-----------------------------------------------------------------  
     31     void Update()
     32     {
     33         //判断旋转  
     34         if (Input.GetMouseButtonDown(1)) //鼠标右键刚刚按下了  
     35         {
     36             if (m_bMouseRightKeyDown == false)
     37             {
     38                 m_bMouseRightKeyDown = true;
     39                 Vector3 kMousePos = Input.mousePosition;
     40                 m_fLastMousePosX = kMousePos.x;
     41                 m_fLastMousePosY = kMousePos.y;
     42             }
     43         }
     44         else if (Input.GetMouseButtonUp(1)) //鼠标右键刚刚抬起了  
     45         {
     46             if (m_bMouseRightKeyDown == true)
     47             {
     48                 m_bMouseRightKeyDown = false;
     49                 m_fLastMousePosX = 0;
     50                 m_fLastMousePosY = 0;
     51             }
     52         }
     53         else if (Input.GetMouseButton(1)) //鼠标右键处于按下状态中  
     54         {
     55             if (m_bMouseRightKeyDown)
     56             {
     57                 Vector3 kMousePos = Input.mousePosition;
     58                 float fDeltaX = kMousePos.x - m_fLastMousePosX;
     59                 float fDeltaY = kMousePos.y - m_fLastMousePosY;
     60                 m_fLastMousePosX = kMousePos.x;
     61                 m_fLastMousePosY = kMousePos.y;
     62 
     63 
     64                 Vector3 kNewEuler = transform.eulerAngles;
     65                 kNewEuler.x += (fDeltaY * rotateSpeed);
     66                 kNewEuler.y += -(fDeltaX * rotateSpeed);
     67                 transform.eulerAngles = kNewEuler;
     68             }
     69         }
     70 
     71 
     72         //判断位移  
     73         float fMoveDeltaX = 0.0f;
     74         float fMoveDeltaZ = 0.0f;
     75         float fDeltaTime = Time.deltaTime;
     76         if (Input.GetKey(KeyCode.A))
     77         {
     78             fMoveDeltaX -= moveSpeed * fDeltaTime;
     79         }
     80         if (Input.GetKey(KeyCode.D))
     81         {
     82             fMoveDeltaX += moveSpeed * fDeltaTime;
     83         }
     84         if (Input.GetKey(KeyCode.W))
     85         {
     86             fMoveDeltaZ += moveSpeed * fDeltaTime;
     87         }
     88         if (Input.GetKey(KeyCode.S))
     89         {
     90             fMoveDeltaZ -= moveSpeed * fDeltaTime;
     91         }
     92         if (fMoveDeltaX != 0.0f || fMoveDeltaZ != 0.0f)
     93         {
     94             Vector3 kForward = transform.forward;
     95             Vector3 kRight = Vector3.Cross(kUpDirection, kForward);
     96             Vector3 kNewPos = transform.position;
     97             kNewPos += kRight * fMoveDeltaX;
     98             kNewPos += kForward * fMoveDeltaZ;
     99             transform.position = kNewPos;
    100         }
    101     }
    102 }

    原链接:http://www.cnblogs.com/oilcode/p/6927951.html

  • 相关阅读:
    程序猿和产品狗
    编写一个友元函数,求两个日期之间相差的天数
    集合的模拟实现(类模板)
    友元很简单2016final
    攻防世界-parallel-comparator-200
    web-GXYCTF2019 StrongestMind
    破解010Editor
    2020第三届江西省高校网络安全技能大赛线下解题赛部分wp
    pwn-EasyHeap(House of spirit)
    web-2020 ciscn littlegame(原型链污染)
  • 原文地址:https://www.cnblogs.com/luxishi/p/7229609.html
Copyright © 2020-2023  润新知