unity上で agent(ヒンジジョイントでカプセルつなげた腕みたいなやつ)で殴った強さを図りたいのですが
this.transform.Rotate(x,0,0);で動かすと
velocity.magnitudeが0になってしまいます
AddForceで試しても全く動きません
agent0 agent1 thisの順番でつながってます
Targetは殴るもの
殴った速度を測れるようにするにはどうしたらいいですか?
public class agent : MonoBehaviour { private GameObject CapsuleBottom; private Rigidbody rd; public Transform Target; public Transform agent1; public Transform agent0; // Start is called before the first frame update void Start() { rd = this.GetComponent<Rigidbody>(); } // Update is called once per frame void Update() { float x = Random.Range(-1.0f, 1.0f) * 10; this.transform.Rotate(x,0,0); agent1.transform.Rotate(x,0,0); float y = Random.Range(0f, 0.1f); float z = Random.Range(0f, 0.1f); agent0.transform.Translate(y, 0f,z); } //オブジェクトと衝突している間に呼ばれ続けます void OnCollisionStay(Collision collision) { if (collision.collider.name == "yuka") { Debug.Log(-1*rd.velocity.magnitude+ rd.velocity.magnitude); } if (collision.collider.name == "target") { Debug.Log(rd.velocity.magnitude + rd.velocity.magnitude); } } }
追記
targetにはすでにある程度動きがあります(野球のボール とバット、みたいな)
殴るやつ=target(ボール) たたくやつ=agent(バット)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/23 16:02
2020/07/23 16:05
2020/07/23 16:06
2020/07/23 16:28
2020/07/23 16:36 編集
2020/07/23 16:41
2020/07/23 16:42
2020/07/23 16:43
2020/07/23 16:45
2020/07/23 16:50 編集