非常适合比如SpringArm跟随PlayerController旋转,做限制。
。原理就是 当Pitch < 0时,就 让它只能往上加。其余时候都是可以加,可以减。
但其实UE里Control的Rotation里Pitch > 0》实验出来,Pitch是在(270,360),360水平.超过360 就是 0。超过0就是 向下。
为什么要让它有时为0,因为有时AddControllerPitchInput()要往下过头,影响效果。做的一个偏正处理。
if (GetControlRotation().Pitch > 350 )
{
//GetController()->SetControlRotation(FRotator(0.19999, GetControlRotation().Yaw, GetControlRotation().Roll));
m_onlyup = true;
}
else if(GetControlRotation().Pitch < 100)
{
m_onlyup = true;
GetController()->SetControlRotation(FRotator(0, GetControlRotation().Yaw, GetControlRotation().Roll));
}
else
{
m_onlyup = false;
}
if (m_onlyup)
{
if(y > 0)
AddControllerPitchInput(y);
}
else
{
AddControllerPitchInput(y);
}
但是,有一种情况不行。就是,当你的坐标系不是UE。而是Cesium那种,需要变换的GloberAnchor那种。PlayerController不会因为 GloberAnchor 发射映射。它仍然以 UE 自身坐标系为准。