【发布时间】:2016-11-16 18:12:09
【问题描述】:
我正在尝试旋转一个瓶子(我正在计算鼠标的第一个位置和结束位置)并根据“滑动”长度/时间对其施加力。初次滑动后,瓶子应根据滑动力保持旋转,然后在几秒钟后停止。
我希望你能在这里帮助我。谢谢!
这是我尝试做的,但效果不佳:
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("Horizonal") 检测速度变化 X 坐标鼠标和 Input.GetAxis("Vertical") 检测 Y?
-
@Serlite 我的意思是它没有旋转,真的什么都不做。
-
@V.Borodinov 我使用了GetAxis,但只是为了拖动瓶子,它不会像我试图做的那样旋转瓶子。