私はまだマウスでドラッグして別の質問(私はC#でUnityを使用しています)を持ちますが、それほど一般的ではない詳細:ドラッグが発生する経路の途中に障害物が存在する(2Dではなく3Dスペース) 。
説明させてください。"obj"と呼ばれる立方体をドラッグしたい平面があるとします。それは簡単です。これが私の簡単な実装です:
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 1000000))
obj.transform.position = new Vector3(hit.point.x,0.25F,hit.point.z);
}
できます。ただし、平面上に障害物である他のいくつかの立方体もあるとします。明らかに、プレイヤーが平面上で「obj」を動かすとき、そのような動きは障害物によってブロックされるべきです。そして、障害物と衝突している間、「obj」はその障害物の側面にのみ移動して移動する必要があります。マウスを動かして "obj"が障害物との衝突をやめると、自由なドラッグスタイルの動きが再開されます。
課題をより困難にするために、障害物でRigidBodyコンポーネントを使用せずにそれを達成するために懸命に努力しています(ドラッグされたオブジェクトはそれを持つことができます)。それを達成するための最も効率的な方法は何ですか?どうもありがとう!
編集:コメンテーターは私の注意を喚起しました、私はスナップするときにオブジェクトが回転することを許可されていることを言及すべきです。
編集2:元の定式化の難しさを考慮して、ドラッグされたオブジェクトでのリジッドボディコンポーネントの使用を許可する質問を変更しました。ソリューションでは、障害物でリジッドボディコンポーネントを使用できません。