在unity场景中经常有通过键盘中W、S、A、D、Q、E等按键控制相机移动的需求,相机位置更新
控制代码如下:
private void Update()
{
if (!_active)
return;
// Translation
if (_enableTranslation)
{
transform.Translate(Vector3.forward * Input.mouseScrollDelta.y * Time.deltaTime * _translationSpeed);
}
// Movement
if (_enableMovement)
{
Vector3 deltaPosition = Vector3.zero;
float currentSpeed = _movementSpeed;
if (Input.GetKey(_boostSpeed))
currentSpeed = _boostedSpeed;
if (Input.GetKey(KeyCode.W))
{
deltaPosition += transform.forward;
}
if (Input.GetKey(KeyCode.S))
deltaPosition -= transform.forward;
if (Input.GetKey(KeyCode.A))
deltaPosition -= transform.right;
if (Input.GetKey(KeyCode.D))
deltaPosition += transform.right;
// Calc acceleration
CalculateCurrentIncrease(deltaPosition != Vector3.zero);
transform.position += deltaPosition * currentSpeed * _currentIncrease;
}
// Return to init position
if (Input.GetKeyDown(_initPositonButton))
{
transform.position = _initPosition;
transform.eulerAngles = _initRotation;
}
}
当需要限制相机位置时通过在Update函数中添加下判断相机当前的x/y/z位置信息即可实现