Rigidbody2D を一時停止して再開する方法を知りたいです。さまざまな方法を試しましたが、どれも機能しませんでした。主な問題は、ゲームが一時停止すると、rigidbody2D が移動するため、rigidbody2D を一時停止できる必要があり、一時停止を解除すると、rigidbody2D は以前と同じように移動し続ける必要があることだと思います。
これは私がこれまでに持っているコードです:
using UnityEngine;
using System.Collections;
public class Pause : MonoBehaviour {
private Rigidbody _rigidBody;
void Awake ()
{
_rigidBody = Ball.GetComponent<Rigidbody>();
}
private Vector3 _pausedVelocity;
private Vector3 _pausedAngularVelocity;
public void OnMouseEnter()
{
Debug.Log("Pause with velocity=" + _rigidBody.velocity + " & angularVelocity=" + _rigidBody.angularVelocity);
_pausedVelocity = _rigidBody.velocity;
_pausedAngularVelocity = _rigidBody.angularVelocity;
_rigidBody.isKinematic = true;
}
public void OnMouseExit()
{
_rigidBody.isKinematic = false;
_rigidBody.velocity = _pausedVelocity;
_rigidBody.angularVelocity = _pausedAngularVelocity;
Debug.Log("Resume with velocity=" + _rigidBody.velocity + " & angularVelocity=" + _rigidBody.angularVelocity);
}
}
基本的に、このコードは、collision2D コンポーネントを使用して empty にアタッチされ、マウスがその上に置かれると一時停止が出力され、マウスが離れると再生が出力されます。すべてが機能するようにするには、rigidbody2D を一時停止する方法を理解する必要があります。
前もって感謝します!