#スクリプト
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であることは分かったのですがどうすれば良いかまでは書かれていませんでした。
あなたの回答
tips
プレビュー