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

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

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

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

Unity

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

Q&A

0回答

837閲覧

Unity : 位置情報が更新されない

da-ryo

総合スコア11

C#

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

Unity

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

0グッド

0クリップ

投稿2021/07/13 05:00

#スクリプト

public

1{ 2 [SerializeField] GameObject a; 3 [SerializeField] GameObject b; 4 [SerializeField] GameObject c; 5 [SerializeField] GameObject d; 6 [SerializeField] GameObject aa; 7 [SerializeField] GameObject bb; 8 [SerializeField] GameObject cc; 9 [SerializeField] GameObject dd; 10 //右向き 11 npc nsc; 12 private bool ri; 13 //アニメーション 14 private Animator anm; 15 16 // Start is called before the first frame update 17 void Start() 18 { 19 nsc = GetComponent<npc>(); 20 //アニメーション 21 anm = GetComponent<Animator>(); 22 } 23 24 // Update is called once per frame 25 void Update() 26 { 27 28 } 29 public void atA() 30 { 31 nsc = GetComponent<npc>(); 32 ri = nsc.ri; 33 if (ri == true) 34 { 35 Instantiate(a, new Vector2( this.transform.position.x + 3.2f , this.transform.position.y - 1 ), Quaternion.identity); 36 } 37 if (ri == false) 38 { 39 Instantiate(aa, new Vector2( this.transform.position.x + 1 , this.transform.position.y - 1 ), Quaternion.identity); 40 } 41 } 42 public void atB() 43 { 44 nsc = GetComponent<npc>(); 45 ri = nsc.ri; 46 if (ri == true) 47 { 48 Instantiate(b, new Vector2( this.transform.position.x + 3.2f , this.transform.position.y - 1 ), Quaternion.identity); 49 } 50 if (ri == false) 51 { 52 Instantiate(bb, new Vector2( this.transform.position.x + 1 , this.transform.position.y - 1 ), Quaternion.identity); 53 } 54 } 55 public void atC() 56 { 57 nsc = GetComponent<npc>(); 58 ri = nsc.ri; 59 if (ri == true) 60 { 61 Instantiate(c, new Vector2( this.transform.position.x + 3.2f , this.transform.position.y - 1 ), Quaternion.identity); 62 } 63 if (ri == false) 64 { 65 Instantiate(cc, new Vector2( this.transform.position.x + 1 , this.transform.position.y - 1 ), Quaternion.identity); 66 } 67 } 68 public void atD() 69 { 70 nsc = GetComponent<npc>(); 71 ri = nsc.ri; 72 if (ri == true) 73 { 74 Instantiate(d, new Vector2( this.transform.position.x + 3.2f , this.transform.position.y - 1 ), Quaternion.identity); 75 } 76 if (ri == false) 77 { 78 Instantiate(dd, new Vector2( this.transform.position.x + 1 , this.transform.position.y - 1 ), Quaternion.identity); 79 } 80 } 81} 82

#やりたいこと

4つのボタンを作り、それぞれ別のオブジェクトを生成するようにしたいのですが、生成するオブジェクトが移動しても生成位置が変化しません。

4つのボタンはそれぞれ上記スクリプトのatA(),atB(),atC(),atD()を呼び出します。

"ri"の条件分岐も通り、いざInstantiateに移るのですがここの new Vector2( this.transform.position.x + 1 , this.transform.position.y - 1 )が移動しても変化しません。

最初A地点でボタンを押すとオブジェクトの横から発射されるのですが、B地点に移動してボタンを押すとA地点で発射された位置からしか発射されません。

移動後も位置を取得して、常にオブジェクトの隣から発射させたいのですが発射させたいのですがどうすれば良いのでしょうか。

#調べたこと

transformのpositionを取得して値を変えても反映されないのはなぜ?

Vectorがstructであることは分かったのですがどうすれば良いかまでは書かれていませんでした。

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

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

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

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

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

fiveHundred

2021/07/13 05:27

生成するオブジェクト=NPCということでしょうか? また、提示のスクリプトはどこにアタッチしていますか?
da-ryo

2021/07/13 05:32

生成するオブジェクト=NPCであってます! スクリプトはNPCについており、NPCが移動した先で生成したいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問