Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旋转瓶子Unity3D_Unity3d_Rotation - Fatal编程技术网

旋转瓶子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)移动