質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

7685閲覧

Unityにて一定の距離を保ったまま対象を追跡させたい

vanitier

総合スコア38

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2016/01/12 18:25

自分が操作するオブジェクトが一定の距離を離れたらそれを追跡して、常に決まった間隔を保つというような処理を考えています。

イメージとしては対象のオブジェクトと常に紐でくっ付いていて、引っ張られたらその方向へ動くという感じです。

しかし、座標をそのまま入れてやると追跡はしてるようには見えても、座標が常に更新されてないせいかカクつく感じで移動してしまいます。

using UnityEngine; using System.Collections; public class CameraFollowPlayer : MonoBehaviour { public GameObject player; void Update() { if (player.transform.position.x >= transform.position.x + 0.5f) { transform.position = new Vector2(player.transform.position.y - 0.5f, transform.position.y); } if (player.transform.position.x <= transform.position.x - 0.5f) { transform.position = new Vector2(player.transform.position.x + 0.5f, transform.position.y); } if (player.transform.position.y >= transform.position.y + 0.5f) { transform.position = new Vector2(transform.position.x, player.transform.position.y - 0.5f); } if (player.transform.position.y <= transform.position.y - 0.5f) { transform.position = new Vector2(transform.position.x, player.transform.position.y + 0.5f); } } }

もっと滑らかに追跡させるにはどうすればよいでしょうか
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Distancejoint2Dコンポーネントを使ったらそれらしい動きになり一気に解決しました。

追跡する側のオブジェクトにDistancejoint2Dを付け
Rigidbody2DのGravityScaleなど重力計算するものを全て0にし
GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);をスクリプトに付けるだけです

投稿2016/01/12 20:14

vanitier

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問