旋转瓶子Unity3D
我试图旋转一个瓶子(我正在计算鼠标的第一个位置和结束位置),并根据“滑动”长度/时间对其施加力。初次刷洗后,瓶子应根据刷洗的力度保持旋转,几秒钟后停止 我希望你能在这里帮助我。谢谢 这是我试图做的,但效果不好:旋转瓶子Unity3D,unity3d,rotation,Unity3d,Rotation,我试图旋转一个瓶子(我正在计算鼠标的第一个位置和结束位置),并根据“滑动”长度/时间对其施加力。初次刷洗后,瓶子应根据刷洗的力度保持旋转,几秒钟后停止 我希望你能在这里帮助我。谢谢 这是我试图做的,但效果不好: public Rigidbody bottle; bool isSwiping; Touch thisTouch; Vector2 origPos; Vector2 endPos; float touchSpeed; Vector3 Torque; float timeS
public Rigidbody bottle;
bool isSwiping;
Touch thisTouch;
Vector2 origPos;
Vector2 endPos;
float touchSpeed;
Vector3 Torque;
float timeStart; float timeEnd;
void OnMouseDown()
{
timeStart = Time.time;
origPos = Input.mousePosition;
}
void OnMouseDrag()
{
isSwiping = true;
}
void OnMouseUp()
{
if (isSwiping)
{
timeEnd = Time.time;
endPos = Input.mousePosition;
Vector2 deltaPosition = endPos - origPos;
touchSpeed = deltaPosition.magnitude / (timeEnd-timeStart);
Torque = new Vector3(touchSpeed * 500f, 0, 0);
}
}
void Update()
{
}
void FixedUpdate()
{
if (isSwiping) bottle.AddRelativeTorque(Torque);
}
请尝试使用以下代码:
public Rigidbody bottle;
bool isSwiping;
Touch thisTouch;
Vector2 origPos;
Vector2 endPos;
float touchSpeed;
Vector3 Torque;
float timeStart; float timeEnd;
void OnMouseDown()
{
timeStart = Time.time;
origPos = Input.mousePosition;
}
void OnMouseUp()
{
timeEnd = Time.time;
endPos = Input.mousePosition;
Vector2 deltaPosition = endPos - origPos;
touchSpeed = deltaPosition.magnitude / (timeEnd-timeStart);
Torque = new Vector3(touchSpeed * 500f, 0, 0);
isSwiping = true;
}
void FixedUpdate()
{
if (isSwiping) bottle.AddRelativeTorque(Torque);
}
你能详细说明在这种情况下“不好用”是什么意思吗?请根据需要使用其他信息和视觉辅助工具编辑您的问题。可能是为了刷卡,您尝试使用Input。GetAxis(“水平”)用于检测速度变化X坐标鼠标和输入。GetAxis(“垂直”)用于Y?@Serlite我的意思是它不旋转,实际上什么也不做。@V.Borodinov我使用GetAxis,但只是为了拖动瓶子,它不会像我想做的那样旋转瓶子。太好了!它起作用了!但有一件事,在我接受答案之前,瓶子不停地旋转着。如何随时间降低速度?当我旋转瓶子时,它应该旋转一段时间,这取决于我的滑动。可能吗?是的,我这样做了,它直接停止,而不随时间降低转速。更改扭矩值,示例扭矩=矢量3。在FixedUpdate中向(扭矩,矢量3.0,time.deltaTime*3)移动