using UnityEngine;
/// <summary>
/// 镜头漫游控制
/// </summary>
public class RoamingCamera : MonoBehaviour
{
[Tooltip("移动速度")]
public float moveSpeed = 1.0f;
[Tooltip("旋转速度")]
public float rotationSpeed = 40.0f;
[Header("按键设置")]
[Tooltip("向前移动按键")]
public KeyCode forwardKey = KeyCode.W;
[Tooltip("向后移动按键")]
public KeyCode backKey = KeyCode.S;
[Tooltip("向左移动按键")]
public KeyCode leftKey = KeyCode.A;
[Tooltip("向右移动按键")]
public KeyCode rightKey = KeyCode.D;
[Tooltip("向左旋转按键")]
public KeyCode leftRotateKey = KeyCode.Q;
[Tooltip("向右旋转按键")]
public KeyCode rightRotateKey = KeyCode.E;
private Transform m_Transform;
private void Awake()
{
m_Transform = transform;
}
private void Update()
{
ForwardMove();
BackMove();
LeftMove();
RightMove();
LeftRotate();
RightRotate();
}
// 向前移动
private void ForwardMove()
{
if (Input.GetKey(forwardKey))
{
m_Transform.Translate(m_Transform.forward * moveSpeed * Time.deltaTime, Space.World);
}
}
// 向后移动
private void BackMove()
{
if (Input.GetKey(backKey))
{
m_Transform.Translate(-m_Transform.forward * moveSpeed * Time.deltaTime, Space.World);
}
}
// 向左移动
private void LeftMove()
{
if (Input.GetKey(leftKey))
{
m_Transform.Translate(-m_Transform.right * moveSpeed * Time.deltaTime, Space.World);
}
}
// 向右移动
private void RightMove()
{
if (Input.GetKey(rightKey))
{
m_Transform.Translate(m_Transform.right * moveSpeed * Time.deltaTime, Space.World);
}
}
// 向左旋转镜头
private void LeftRotate()
{
if (Input.GetKey(leftRotateKey))
{
m_Transform.Rotate(-Vector3.up * rotationSpeed * Time.deltaTime, Space.World);
}
}
// 向右旋转镜头
private void RightRotate()
{
if (Input.GetKey(rightRotateKey))
{
m_Transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.World);
}
}
}