2016-04-11 9 views
0

私はオブジェクトを任意の形状に動的に生成します。 LineRendererを使用して構築され、EdgeColliderが添付されています。あるオブジェクトがこのオブジェクトに接触すると、そのオブジェクトを「抱きしめて」その周囲を移動します。2Dオブジェクトを抱き寄せて移動する

オブジェクトが黒い線である場合、私はオブジェクトが緑色の線をたどり、オブジェクトの周りに完全な円を描きたいと思います。

enter image description here

私は2Dでこれを行うことができますどのようにかどうか分からないしかし、Unityへのかなり新しいものな3Dの世界でレイキャスティングや物事についてのいくつかの情報を読んでいます。

あなたのご提案は非常に高く評価されています。 ;)

ありがとうございます!

+0

これを行うことは非常に困難です。本当に、私は気にしません。 – Fattie

+0

私はそれを他の方法でやりたい、あるいは私の考えを完全に放棄することを提案していますか?私は「あきらめる」という言葉が何か良いSOユーザーがしなければならないとは思わない: -/ – Faraday

答えて

1

ほとんどの3Dメソッドには、2D対応のものがあります。例えばPhysics.Raycastの代わりにPhysics2D.Raycastなどです。これはUnityで3Dから2Dに移動するときに簡単に上手くいくものです。

契約コーダーとして、私はあなたのためにこのようなものを作りたいと思っています。 stackoverflowユーザーとして、私はあなたにそれを自分で行うために従うことができるアウトラインを与えるつもりです。 :)

は、衝突した後、このすべてのフレームをやって起動します。

  1. はラインに直面して、あなたのオブジェクトを回転させます。
  2. 目的の方向にオブジェクトを移動します。
  3. オブジェクトを線の方向に追加して、 を固定します。

あなたはこれを達成するためにLookAtTranslate、およびRigidbody2D.AddForceを使用することができます。

これがうまくいけば、うれしいコーディングです!

+0

ちょっと、情報ありがとう、私はあなたの提案でかなり確信している私は方法の80%のようだすでにある。 20分で、私はオブジェクトを 'Physics2D.Raycast'関数を使ってコライダーに沿って移動させることができました。 Velocityを使用すると、何らかの理由でオブジェクトが平坦な領域でスピードアップするように見えます。私はそれを 'IsKinematic'に設定しましたので、力はそれに影響を与えるべきではありません...あなたの助けてくれてありがとう、なぜ平坦化されたエリアが高速化を引き起こすのかを知っていますか?Velocity = new Vector2(_10 * Time.deltaTime、0) ' - Xに沿ってのみ移動する – Faraday

+0

物理材料を使用して摩擦とブーケを除去してください。そうでない場合は、コードを投稿して新しい質問が必要になることがあります。 – Allen

+0

個人的に私に連絡する方法はありません。あなたが関心を持つならユニティを学ぶときに、私は多分様々なビットと開発の部分で私を助ける請負業者としてあなたを雇うことに興味があります:) – Faraday

関連する問題