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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1580閲覧

オブジェクトの現在位置と前の位置

GOTOken

総合スコア54

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/06/25 05:16

c#

1 void Update () { 2 var prevPos = transform.position; 3 4 float x = this.transform.position.x - prevPos.x; 5 float y = this.transform.position.y - prevPos.y; 6 7 Vector2 vec = new Vector2(x, y).normalized; 8 9 10 11 float rot = Mathf.Atan2(vec.y, vec.x) * 180 / Mathf.PI; 12 if (rot > 180) rot -= 360; 13 if (rot < -180) rot += 360; 14 15 16 17 Debug.Log("Angle = " + rot); 18 19 prevPos = this.transform.position; 20 } 21 private void FixedUpdate() 22 { 23 PlayerMove(); 24 } 25 void PlayerMove() 26 { 27 //移動処理 28 float dy = Input.GetAxis("Vertical") * Playerspped; 29 float dx = Input.GetAxis("Horizontal") * Playerspped; 30 31 rb2d.velocity = new Vector2(dx, dy); 32 // ShootNWay(,bulletSpeed,BulletCount) 33 34 35 } 36

オブジェクトの角度を求め、キーの入力時角度を入力先に向くようにしようとしました。が、実装できず。
Debu.LogでAngleを出力しようとしたのですが、rotが0のままで動きません。この場合は、GetAxisの下に書けば良いのでしょうか・・・?

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

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

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

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

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

guest

回答1

0

ベストアンサー

this.tranformなどのthisはあまり使わないので間違っているかもしれませんが
transform.positionとthis.transform.positionは同じ値なので、x,yの値が常に0になっていると思います。

private Vector2 prevPos;     void Update () { Vector2 nowPos = this.transform.position; Vector2 vec = new Vector2(x, y).normalized; /* 処理 */ prePos = nowPos; } void Setup() { prePos = this.transform.position; }

にすれば直るかと思います。

投稿2018/06/25 08:05

TomoG12

総合スコア299

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

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

GOTOken

2018/06/25 22:16

ありがとうございます! Setup関数が、その現在の角度?位置を記しているんですよね??
TomoG12

2018/06/26 00:25

Setup関数が、現在の位置を前回の位置として入れています。 仮にSetup関数に入れていますが、計測開始したい瞬間にprePosを初期化した方がいいかと思います。 望んだrotの値が出るかまでは分かりませんが、これでrotの値は変化すると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問