国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Unity3D 學習教程 14 C# 旋轉鏡頭

2019-11-17 02:35:19
字體:
來源:轉載
供稿:網友

Unity3D 學習教程 14 C# 旋轉鏡頭

if(Input.GetKey(KeyCode.Q)){transform.Rotate(0,-50*Time.deltaTime,0,Space.Self);} if(Input.GetKey(KeyCode.E)){transform.Rotate(0,50*Time.deltaTime,0,Space.Self);}

模仿WOW鏡頭操作

  1. using UnityEngine;
  2. using System.Collections;
  3. ///
  4. /// 將此腳本附加到任意鏡頭上,可以使其擁有WOW鏡頭的控制方式
  5. ///
  6. public class WowCamera : MonoBehaviour
  7. {
  8. ///
  9. /// 鏡頭目標
  10. ///
  11. public Transform Target;
  12. ///
  13. /// 鏡頭離目標的距離
  14. ///
  15. public float Distance = 30.0f;
  16. ///
  17. /// 最大鏡頭距離
  18. ///
  19. public float MaxDistance = 30.0f;
  20. ///
  21. /// 鼠標滾輪拉近拉遠速度系數
  22. ///
  23. public float ScrollFactor = 10.0f;
  24. ///
  25. /// 鏡頭旋轉速度比率
  26. ///
  27. public float RotateFactor = 10.0f;
  28. ///
  29. /// 鏡頭水平環繞角度
  30. ///
  31. public float HorizontalAngle = 45;
  32. ///
  33. /// 鏡頭豎直環繞角度
  34. ///
  35. public float VerticalAngle = 0;
  36. PRivate Transform mCameraTransform;
  37. void Start()
  38. {
  39. mCameraTransform = transform;
  40. }
  41. void Update()
  42. {
  43. //滾輪向前:拉近距離;滾輪向后:拉遠距離
  44. var scrollAmount = Input.GetAxis(GameSetting.MouseScrollWheel);
  45. Distance -= scrollAmount * ScrollFactor;
  46. //保證鏡頭距離合法
  47. if (Distance < 0)
  48. Distance = 0;
  49. else if (Distance > MaxDistance)
  50. Distance = MaxDistance;
  51. //按住鼠標左右鍵移動,鏡頭隨之旋轉
  52. var isMouseLeftButtonDown = Input.GetMouseButton(0);
  53. var isMouseRightButtonDown = Input.GetMouseButton(1);
  54. if (isMouseLeftButtonDown || isMouseRightButtonDown)
  55. {
  56. Screen.lockCursor = true;
  57. var axisX = Input.GetAxis(GameSetting.MouseX);
  58. var axisY = Input.GetAxis(GameSetting.MouseY);
  59. HorizontalAngle += axisX * RotateFactor;
  60. VerticalAngle += axisY * RotateFactor;
  61. if (isMouseRightButtonDown)
  62. {
  63. //如果是鼠標右鍵移動,則旋轉人物在水平面上與鏡頭方向一致
  64. Target.rotation = Quaternion.Euler(0, HorizontalAngle, 0);
  65. }
  66. }
  67. else
  68. {
  69. Screen.lockCursor = false;
  70. }
  71. //按鏡頭距離調整位置和方向
  72. var rotation = Quaternion.Euler(-VerticalAngle, HorizontalAngle, 0);
  73. var offset = rotation * Vector3.back * Distance;
  74. mCameraTransform.position = Target.position + offset;
  75. mCameraTransform.rotation = rotation;
  76. }
  77. }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清徐县| 岳普湖县| 天等县| 微博| 友谊县| 宁蒗| 进贤县| 水富县| 鄱阳县| 银川市| 沙坪坝区| 屯门区| 荃湾区| 英超| 资阳市| 会宁县| 顺义区| 玛纳斯县| 昭通市| 柳州市| 通州区| 全椒县| 晋江市| 淅川县| 莆田市| 长寿区| 嘉峪关市| 襄樊市| 津市市| 长海县| 阿克| 兴城市| 科尔| 通辽市| 静海县| 鹤山市| 文安县| 南雄市| 舟曲县| 县级市| 股票|