• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Unity3D学习教程14C#旋转镜头

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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. }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#基础-this和base的用法发布时间:2022-07-18
下一篇:
C#WebBrowser设置独立的代理发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap