所以我使用标准资产的FPS控制器预制件,并将我的脚本“Camera Push Up Effect”附加到主摄像头(FirstPersonCharacter)。一切正常,但我现在面临的问题是每当玩家开枪时,它都不会向上推动相机。我在这里要做的就是给玩家的枪提供一些后坐力,这样当玩家射击时它不会留在一个地方。我还想限制玩家在x轴上的旋转,这样枪就不会永远上升(最小值为-90度,最大值为0)。
using UnityEngine;
using InControl;
public class CameraPushUpEffect : MonoBehaviour
{
public float rotateSpeed;
public float maxRotationX;
public float minRotationX;
private Vector3 V3Rotate = Vector3.zero;
// Update is called once per frame
void Update ()
{
InputDevice device = InputManager.ActiveDevice;
if(device.RightBumper) // The player is shooting.
{
pushCameraUp();
}
else if (transform.localRotation.x != 0) // Slerp back to the original unrotated position.
{
transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.identity,
Time.deltaTime * rotateSpeed);
}
}
private void pushCameraUp()
{
V3Rotate.x += rotateSpeed * Time.deltaTime;
float newRotationX = Mathf.Clamp(V3Rotate.x, minRotationX, maxRotationX);
Quaternion maxRotation = Quaternion.Euler(newRotationX, 0, 0);
transform.localRotation = Quaternion.Slerp(transform.localRotation, maxRotation, Time.deltaTime * rotateSpeed);
}
}
答案 0 :(得分:0)
看起来主要的罪魁祸首是The First Person Controller脚本中的鼠标外观脚本(此脚本是FPSController预制件的一部分)。请注意,我使用的统一体有鼠标外观而不扩展MonoBehaviour,并设置为私有序列化。我找到答案的帖子提到,如果将鼠标外观组件连接到主摄像头,则无法旋转摄像头(X轴),这显然不是这种情况(FPSController是孩子的父亲FirstPersonCharacter标记为主摄像头,FirstPersonCharacter没有附加鼠标外观)。所以我只是禁用了第一人称控制器脚本来确认这是否属实,确实是。
这是链接以防其他人想要查看它。