私はボトルをスピンしようとしています(私はマウスの最初のposとendの位置を計算しています)、 'スワイプ'の長さ/時間に従ってそれに力を加えます。最初のスワイプの後、ビンはスワイプの力に基づいて回転し続け、数秒後に停止する必要があります。ボトルを回転Unity3D
ここで私を助けてくれることを願っています。ありがとう!
これは私がしようとしたものですが、それはうまく動作しません:
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);
}
あなたが「doesnのものに手の込んだことができますこの場合、「うまく働く」という意味ですか?必要に応じて追加情報と視覚資料を使用して質問を編集してください。 – Serlite
スワイプしてみてください。スピードの変化を検出するためにInput.GetAxis( "Horizonal")を使用します.YのY座標のマウスとInput.GetAxis( "Vertical")? –
@Serlite私はそれが回転していないことを意味し、何もしません。 –