unity,物体旋转后会回再次旋转到相邻设置好的最近角度代码。

unity,物体旋转后会回再次旋转到相邻设置好的最近角度代码。,第1张

//物体位置随鼠标转动,转动范围限制在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对象旋转问题!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9311505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存