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

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

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

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

Unity3D

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

Unity

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

C++

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

Q&A

1回答

1203閲覧

拡張メソッドtransform.LookAt2Dを使用した際に生成位置がおかしくなる

GOTOken

総合スコア54

C#

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

Unity3D

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

Unity

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

C++

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

0グッド

0クリップ

投稿2018/07/29 00:05

問題点

実行した際に、対象オブジェクトに対して自身のオブジェクトが約45°ずれている。
やりたいこと、知りたいこと

生成位置の調整。ずれの修正を行いたい
やってみたこと
Quaternion と  Quaternion型 の違いがわからない。

Quartanion型同士での計算でやれば直るのではないか。と思い、以下のコードを考えてみた

c#

1 Quaternion rotetion = new Quaternion(0, 0, 45, 1); 2 Instantiate(Bullet, transform.position, transform.localRotation + rotetion); 3

が、エラーを吐かれ実装できなかった。
ソースコード

c#

1//拡張メソッド 2 public static void LookAt2D(this Transform transform, Vector2 target) 3 { 4 Vector2 current = transform.position; 5 var direction = target - current; 6 var angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; 7 transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); 8 } 9

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class BOSS : MonoBehaviour { 6 7 public float speed; 8 9 public Transform Player; 10 11 //弾系統管理変数 12 public GameObject Bullet; 13 [SerializeField] 14 private float timer;//発射時間計測用変数 15 16 //コンポーネント取得 17 18 // Use this for initialization 19 void Start () { 20 } 21 22 // Update is called once per frame 23 void Update () { 24 25 this.transform.LookAt2D(Player.transform.position); 26 27 timer += Time.deltaTime; 28 //一定時間後に発射 29 if (timer > 1f) 30 { 31 Quaternion rotetion = new Quaternion(0, 0, 45, 1); 32 Instantiate(Bullet, transform.position, transform.localRotation); 33 timer = 0; 34 } 35 36 } 37

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

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

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

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

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

sakura_hana

2018/07/30 04:56

BOSSコンポーネントの付いたオブジェクトのlocalRotationは(0,0,0)ですか?
guest

回答1

0

Instantiateしているということはプレハブのrotationの値が0,0,0になってないとかではないでしょうか?

投稿2018/08/03 05:15

MasujimaRyohei

総合スコア422

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問