ピンボールテーブルのプランジャを作ろうとしています。基本的には、剛体とスプリングジョイントが取り付けられた立方体です。特定のキーが押されると、私は、スプリングのconnectedAnchorにz値を追加してキューブを移動しようとしています。そして、キーが押されなくなったら、connectedAnchorは元の位置に戻ります。相対的に連結されたアンカー付きのスプリングジョイント
問題はconnectedAnchor操作がワールドスペースで発生し、テーブルが回転しているためにz軸に沿ってキューブを移動することが正しくないことです。基本的に私が探しているのは、連結されたアンカーを実行する方法ですが、ワールド座標軸ではなくキューブの変換にローカルな軸を使用することです。
元の接続されたアンカーを取得するには、「自動設定」をチェックしてから、操作を行う前にチェックを外してください。 Joint.connectedAnchorのユニティドキュメントは、これはうまくいくと言いますが、そうではありません。
Here's my script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlungerController : MonoBehaviour {
public float movement_increment_z;
public float max_movement_z;
private SpringJoint spring;
private Vector3 orig_anchor;
private void Start() {
spring = GetComponent<SpringJoint>();
if (!spring) { throw new System.Exception("spring joint is needed"); };
orig_anchor = spring.connectedAnchor;
}
public void processPlungerInput (bool isKeyPressed) {
Debug.Log(orig_anchor);
if (isKeyPressed) {
if (spring.connectedAnchor.z < max_movement_z) {
spring.connectedAnchor += new Vector3(0,0,movement_increment_z);
} else {
spring.connectedAnchor = orig_anchor;
}
}
}
}
剛体は、z軸の移動以外のすべてに拘束されます。