【问题标题】:Rotating a bottle Unity3D旋转瓶子 Unity3D
【发布时间】:2016-11-16 18:12:09
【问题描述】:

我正在尝试旋转一个瓶子(我正在计算鼠标的第一个位置和结束位置)并根据“滑动”长度/时间对其施加力。初次滑动后,瓶子应根据滑动力保持旋转,然后在几秒钟后停止。

我希望你能在这里帮助我。谢谢!

bottle interface

这是我尝试做的,但效果不佳:

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);
 }

【问题讨论】:

  • 您能否详细说明在这种情况下“效果不佳”是什么意思?请根据需要使用其他信息和视觉辅助工具编辑您的问题。
  • 可能是滑动,您尝试使用 Input.GetAxis("Horizo​​nal") 检测速度变化 X 坐标鼠标和 Input.GetAxis("Vertical") 检测 Y?
  • @Serlite 我的意思是它没有旋转,真的什么都不做。
  • @V.Borodinov 我使用了GetAxis,但只是为了拖动瓶子,它不会像我试图做的那样旋转瓶子。

标签: unity3d rotation


【解决方案1】:

尝试使用此代码:

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);
 }

【讨论】:

  • 太棒了!有用!在我接受答案之前有一件事,瓶子不停地旋转。我怎样才能随着时间的推移降低速度?当我旋转瓶子时,它应该旋转一段时间取决于我的滑动。有可能吗?
  • 是的,我这样做了,它直接停止,不会随着时间的推移降低旋转速度。
  • 更改扭矩值,例如 Torque = Vector3.MoveTowards(Torque, Vector3.zero, Time.deltaTime * 3) in FixedUpdate
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多