//物体位置随鼠标转动,转动范围限制在0-36之间
public float rotateSpeed = 100f;//旋转速率
public float mouseSpeed = 10f;//鼠标移动速率
private Vector3 lastMousePos;
private float minAngel = 00f;//允许最小角度
private float maxAngel = 360f;//允许最大角度
void Start()
{
lastMousePos = InputmousePosition;
}
void Update()
{
Quaternion targetQua;
targetQua = QuaternionEuler(0, (InputmousePosition - lastMousePos)x mouseSpeed, 0) transformlocalRotation;
transformlocalRotation = QuaternionEuler(targetQuaeulerAnglesx, MathfClamp(MathfMin(targetQuaeulerAnglesy, 3600f - targetQuaeulerAnglesy), minAngel, maxAngel), targetQuaeulerAnglesz);
lastMousePos = InputmousePosition;
}
//判断离0,12,24,36哪个最近
float FindNearestAngel(float curAngel)
{
float nearestAngel=00f;
if (curAngel >=00f && curAngel <60f)
{
nearestAngel = 00f;
}
else if (curAngel >= 60f && curAngel < 180f)
{
nearestAngel = 120f;
}
else if (curAngel >= 180f && curAngel < 300f)
{
nearestAngel = 240f;
}
else if (curAngel >= 300f && curAngel <= 360f)
{
nearestAngel = 360f;
}
return nearestAngel;
}
//自动转动到最近的角度
transformrotation = QuaternionLerp(transformrotation, QuaternionEuler(0, FindNearestAngel(transformrotationeulerAnglesy), 0), TimedeltaTime rotateSpeed)
向量计算,朝向就是向量的方向,知道向量,用QuaternionLookRotation找到角度,旋转,如果某个坐标轴不对,再继续旋转响应角度即可,其实用lookat也是可以的,再乘以一个四元数把错误的角度纠正就可以了,或者直接加个父物体来保证正确朝向
以上就是关于unity,物体旋转后会回再次旋转到相邻设置好的最近角度代码。全部的内容,包括:unity,物体旋转后会回再次旋转到相邻设置好的最近角度代码。、Unity3d做的2D游戏,2D对象旋转问题!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)