前提・実現したいこと
他のスクリプトからインスタンスを生成するScriptが呼び出し生成したObjectにAddforseで力を加えたい
発生している問題・エラーメッセージ
エラーメッセージはなし
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ShotAttack : MonoBehaviour 6{ 7 //object 8 GameObject PlayerObject; //player 9 //transform 10 Transform ShotManager; //shotPrefabの親 11 //PrefabPath 12 UnityEngine.Object ShotPrefabPath; //shotPrefab 13 void Start() 14 { 15 //object 16 PlayerObject = GameObject.Find("Chara"); 17 //path 18 ShotManager = GameObject.Find("ShotManager").GetComponent<Transform>(); //shotの親object 19 //prefabのpath 20 ShotPrefabPath = Resources.Load("Prefab/ShotType/NomalShotPrefab"); 21 } 22 private void Update() 23 { 24 25 } 26 /// ------------------- 27 /// 横に弾を生成し発射 28 /// ------------------- 29 public void frontShotAttack() 30 { 31 Vector3 pos = transform.position; 32 33 GameObject ShotPrefabObj = (GameObject)ShotPrefabPath; 34 GameObject ShotPrefab = Instantiate(ShotPrefabObj, pos, Quaternion.identity, ShotManager); 35 36 if (PlayerObject.transform.position.x - transform.position.x > 0) 37 { 38 Hashtable SetShotPos = new Hashtable(); 39 SetShotPos.Add("position", ShotPrefab.gameObject.transform.position + new Vector3(1.0f, 0.0f, 0.0f)); 40 SetShotPos.Add("time", 2.0f); 41 SetShotPos.Add("oncomplete", "shottest"); 42 SetShotPos.Add("oncompleteget", ShotPrefab.gameObject); 43 44 iTween.MoveTo(ShotPrefab.gameObject, SetShotPos); 45 46 var shotRb = ShotPrefab.GetComponent<Rigidbody>(); 47 48 var vec = PlayerObject.transform.position - ShotPrefab.transform.position; 49 vec.x -= 0.5f; 50 51 shotRb.AddForce(vec.normalized * 10f, ForceMode.Impulse); 52 } 53 else 54 { 55 Hashtable SetShotPos = new Hashtable(); 56 SetShotPos.Add("position", ShotPrefab.gameObject.transform.position + new Vector3(-1.0f, 0.0f, 0.0f)); 57 SetShotPos.Add("time", 2.0f); 58 SetShotPos.Add("oncomplete", "shottest"); 59 SetShotPos.Add("oncompleteget", ShotPrefab.gameObject); 60 61 iTween.MoveTo(ShotPrefab.gameObject, SetShotPos); 62 63 var shotRb = ShotPrefab.GetComponent<Rigidbody>(); 64 65 var vec = PlayerObject.transform.position - ShotPrefab.transform.position; 66 vec.x += 0.5f; 67 68 shotRb.AddForce(vec.normalized * 10f, ForceMode.Impulse); 69 } 70 }
試したこと
そこのScriptに入っているかはDebug.Logをつかい確かめて呼び出されていることは確認しました。
そのScript内のupdeta関数で呼び出せばインスタンスは生成してくれましたがAddforseは動いていませんでした。
別のオブジェクトにこのScriptをつけupdateで動かした場合正常な動きを確認しました。
上ができているのでPathが間違っているわけではないと思います
コメント
お助けお願いします...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。