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

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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镜头操作

using UnityEngine;using System.Collections;////// 将此脚本附加到任意镜头上,可以使其拥有WOW镜头的控制方式///public class WowCamera : MonoBehaviour{////// 镜头目标///public Transform Target;////// 镜头离目标的距离///public float Distance = 30.0f;////// 最大镜头距离///public float MaxDistance = 30.0f;////// 鼠标滚轮拉近拉远速度系数///public float ScrollFactor = 10.0f;////// 镜头旋转速度比率///public float RotateFactor = 10.0f;////// 镜头水平环绕角度///public float HorizontalAngle = 45;////// 镜头竖直环绕角度///public float VerticalAngle = 0;PRivate Transform mCameraTransform;void Start(){mCameraTransform = transform;}void Update(){//滚轮向前:拉近距离;滚轮向后:拉远距离var scrollAmount = Input.GetAxis(GameSetting.MouseScrollWheel);Distance -= scrollAmount * ScrollFactor;//保证镜头距离合法if (Distance < 0)Distance = 0;else if (Distance > MaxDistance)Distance = MaxDistance;//按住鼠标左右键移动,镜头随之旋转var isMouseLeftButtonDown = Input.GetMouseButton(0);var isMouseRightButtonDown = Input.GetMouseButton(1);if (isMouseLeftButtonDown || isMouseRightButtonDown){Screen.lockCursor = true;var axisX = Input.GetAxis(GameSetting.MouseX);var axisY = Input.GetAxis(GameSetting.MouseY);HorizontalAngle += axisX * RotateFactor;VerticalAngle += axisY * RotateFactor;if (isMouseRightButtonDown){//如果是鼠标右键移动,则旋转人物在水平面上与镜头方向一致Target.rotation = Quaternion.Euler(0, HorizontalAngle, 0);}}else{Screen.lockCursor = false;}//按镜头距离调整位置和方向var rotation = Quaternion.Euler(-VerticalAngle, HorizontalAngle, 0);var offset = rotation * Vector3.back * Distance;mCameraTransform.position = Target.position + offset;mCameraTransform.rotation = rotation;}}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航