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

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

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

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3285閲覧

Unity、C#を用いたカメラによるキャラクターの追従

ksoto

総合スコア12

C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/01/20 20:35

編集2020/01/22 13:49

UnityでUnityちゃんをキー操作させて、Unityちゃんをカメラが追従するということをやりたいです。Unityちゃんのキー操作もカメラの追従もスクリプトを用いてC#で動かすことを考えています。

https://unity-shoshinsha.biz/archives/189
こちらのサイトを参考にしてUnityちゃんをキー操作することはすぐにできましたが、カメラの追従の方がうまくいきません。
TPSのように常にUnityちゃんの後ろにカメラがあるようにしたいのですが、どのサイトを参考にしてもうまくできませんでした。

C#を用いてカメラを常にUnityちゃんの後ろに追従させる方法を教えてほしいです

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Player : MonoBehaviour { 6 7 //Rigidbodyを変数に入れる 8 Rigidbody rb; 9 //移動スピード 10 public float speed = 3f; 11 //ジャンプ力 12 public float thrust = 200; 13 //Animatorを入れる変数 14 private Animator animator; 15 //ユニティちゃんの位置を入れる 16 Vector3 playerPos; 17 //地面に接触しているか否か 18 bool ground; 19 20 void Start() 21 { 22 //Rigidbodyを取得 23 rb = GetComponent<Rigidbody>(); 24 //ユニティちゃんのAnimatorにアクセスする 25 animator = GetComponent<Animator>(); 26 //ユニティちゃんの現在より少し前の位置を保存 27 playerPos = transform.position; 28 } 29 30 void Update() 31 { 32 //地面に接触していると作動する 33 if (ground) 34 { 35 //A・Dキー、←→キーで横移動 36 float x = Input.GetAxisRaw("Horizontal") * Time.deltaTime * speed; 37 38 //W・Sキー、↑↓キーで前後移動 39 float z = Input.GetAxisRaw("Vertical") * Time.deltaTime * speed; 40 41 //現在の位置+入力した数値の場所に移動する 42 rb.MovePosition(transform.position + new Vector3(x, 0, z)); 43 44 //ユニティちゃんの最新の位置から少し前の位置を引いて方向を割り出す 45 Vector3 direction = transform.position - playerPos; 46 47 //移動距離が少しでもあった場合に方向転換 48 if (direction.magnitude > 0.01f) 49 { 50 //directionのX軸とZ軸の方向を向かせる 51 transform.rotation = Quaternion.LookRotation(new Vector3 52 (direction.x, 0, direction.z)); 53 //走るアニメーションを再生 54 animator.SetBool("Running", true); 55 } 56 else 57 { 58 //ベクトルの長さがない=移動していない時は走るアニメーションはオフ 59 animator.SetBool("Running", false); 60 } 61 62 //ユニティちゃんの位置を更新する 63 playerPos = transform.position; 64 65 //スペースキーやゲームパッドの3ボタンでジャンプ 66 if (Input.GetButton("Jump")) 67 { 68 //thrustの分だけ上方に力がかかる 69 rb.AddForce(transform.up * thrust); 70 //速度が出ていたら前方と上方に力がかかる 71 if (rb.velocity.magnitude > 0) 72 rb.AddForce(transform.forward * thrust + transform.up * thrust); 73 } 74 } 75 } 76 77 //Planに触れている間作動 78 void OnCollisionStay(Collision col) 79 { 80 ground = true; 81 //ジャンプのアニメーションをオフにする 82 animator.SetBool("Jumping", false); 83 } 84 85 //Planから離れると作動 86 void OnCollisionExit(Collision col) 87 { 88 ground = false; 89 //ジャンプのアニメーションをオンにする 90 animator.SetBool("Jumping", true); 91 } 92}

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

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

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

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

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

guest

回答1

0

ベストアンサー

もっとも簡単な方法はカメラをUnityちゃんの子にすることです。
Unityではオブジェクトを親子関係と呼ばれる状態することが出来、そうすると子は親の動きに追従するようになります。
【Unity入門】カメラの基礎を学ぼう!あんな挙動も意外と簡単!?

次に簡単な方法はUnity Standard Assetsという物を使う方法です。
これは公式が配布しているアセットで、この中には様々なアセットが含まれており、その中の一つとしてカメラ関係のアセットがあります。
ただし、このアセットはかなり前に配布されている物なので、一部スクリプトに古いコードが含まれているので警告メッセージ(黄色い三角に!マーク)が出ますが、無視してかまいません。
【Unity】コードを書かずに15分でUNITY-CHAN(ユニティちゃん)がキャラが走り回り、ジャンプしてカメラも追従する方法

投稿2020/01/21 00:18

Y0241-N

総合スコア1066

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

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

ksoto

2020/01/22 13:47

カメラは追従するようになったのですが操作がしづらくなってしまいました。 例えば後ろに移動した後矢印の→を入力するとカメラから見て左に移動します。最初に向いていた方向と180度逆を向いているためこうなるのだと思います。 カメラを追従させたままキー操作も正確に行う方法はありますか?
ksoto

2020/01/22 13:50

Unityちゃんを動かしているC#のコードを載せました。
Y0241-N

2020/09/28 00:49

すみません、まったく気づいておりませんでした。 質問の内容が別件になりますので、新しく質問を立てた方が私以外の方からも有益な情報がいただけると思います。 また、移動に関してですが、原因としては移動方法が自身を中心とした移動方法なのか、ワールドを基準とした移動方法なのかによって操作時の移動が変わってきます。 現在の移動は前者の自身を中心として移動している為、そのような挙動になっていると思われます。
ksoto

2020/09/28 01:18

わざわざありがとうございます。 その後無事に解決することができたので大丈夫ですよ
Y0241-N

2020/09/28 01:19

そうでしたか、それはなによりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問