2016-04-13 11 views
0

私はこのような1つのゲーム作っています:このオブジェクトをドラッグすると、それは他のオブジェクトを通過することができず、このオンオブジェクトを他のオブジェクトを通過させずにマウスの位置に移動させますか?

https://www.youtube.com/watch?v=06b0-pwuyKQ

を、私はタッチドラッグ可能で1つのオブジェクトを移動する必要があります。

初めてboxcolliderとrigidbodyを使って、マウスの位置にオブジェクトを置きます。残念なことに、オブジェクトの排水は常に他のオブジェクトを通過します。

私はグリッドマップを作成しようとすると、ゲーム内のすべてのオブジェクトを持って、次にオブジェクトを移動するとき、私はオブジェクトの現在の位置をチェックします。隣人との位置。それは動作します!しかし、斜めの隣のオブジェクトでは、それはまだ通過します。

だから、私は尋ねるために、このトピックを作成することを決定した:

がどのように私は、対角隣接オブジェクトとオブジェクトの位置を固定することができますか? または他を通過せずにオブジェクト剛体を動かすための解決策がありますか?

以下は、私のオブジェクトの位置を固定するためのビデオデモと1つのコードです。

ありがとうございました!

コード:pastebin.com/mSrQjQmn ビデオ:facebook.com/jim.dum.5/videos/450488961822806/

+0

このジムを行うことは非常に困難です。あなたはターゲットに自由な道を探して見つけなければなりません。ちょうど実験するには、これを試してみましょう:あなたが指を押したときに、あなたが動かしているものとしてそのオブジェクトをマークしてください。 **力**をオブジェクトに適用します(移動するだけではありません)。これにより、他の固定オブジェクトを「跳ね返す」ようになります。 – Fattie

答えて

0

Lerpはコライダーをバイパスします。私はスクリプトでこの問題を解決すべきだと思います。

public class StopMoving() 
{ 
public bool canLerp; 
void OnCollisionEnter(Collider other) 
{ 
    if (other.tag == "yourTag") 
    { 
     canLerp = false; 
    } 
} 
} 

あなたのLerpには、canLerpの要件を満たす必要があります。それで、コライダーに当たったときに止めることができます。適切なオブジェクトを識別する方法は何でも使用できます。私は例としてタグを使用しました。 canLerpをtrueに変更して、マウス位置への遅延を再開することを忘れないでください。

関連する問題