素人ゲーム開発を垂れ流しつつ、覚醒に至るまでの記録や役立ち情報、愚痴を書くブログ。ちなみに前立腺の開発もやっている。
また一つ解決。
一瞬ですが、ロックオン中のオブジェクトが消えると
エラーを吐く組み方を変更しました。
Listで管理していた為、.AllRemoveだったかな?
追尾対象を消すと自動的に配列が詰めなおされるので
その弾頭が担当する対象が変わってしまったり
又は不在(NULL)にエラーとなっていました。
1,クリックで「見せかけロケットインスタンス生成」
2,見せかけロケットにアタッチしてるスクリプトの変数を参照しGameObjectを渡す
3,見せかけロケットが消えると同時に本命ロケット生成
4,そのロケットにアタッチしたスクリプトの変数を参照し同じくたらいまわす
5,本命ロケットのスクリプトでif(targetObj != NULL)みたいな感じで
入っている時のみターゲットを追尾するように変更
どうやって渡すのか?
あらかじめアタッチするスクリプトにメンバ関数を作っておく。
例えば、
public class DammyRocket : MonoBehaviour
{
private GameObject targetObj;
public void SetupRocketTarget(GameObject target)
{
targetObj = target;
}
}
この様に仕組んでおく。
そして撃つ側のスクリプトで撃った時にメンバ関数を
呼ぶ。
public class Shot : MonoBehaviour
{
Update()
{
if(撃つ)
{
GameObject obj = Instantiate(生成したいオブジェ);
obj.GetComponents<DammyRocket>().SetupRocketTarget(ターゲットオブジェ);
}
}
}
これを繰り返す。僕はダミーと本命、クリック操作があるので
ダミー、本命の2つにメンバ関数を作る。
「obj」には生成されたプレハブ(左のヒエラルキーのオブジェそのもの)
が代入されるので、そこから右のインスペクター
(アタッチしてるすべてのコンポーネント)を取得できる。
TransformならばGetcomponent<Transform>();と書く。
obj = ロケット なのでロケットにアタッチしたスクリプトを
参照する。この場合<DammyRocket>()。撃つたびに
ロケットが生成されるのでこのShotクラスはそれぞれのロケット
に独立して作られる。これでforやfoeachなど使わずにすむ、と言う方法。
PR
COMMENT
ブログ内検索
カテゴリー
最新コメント
[01/01 FrankSeita]
[10/06 ダージリン]
[10/03 ゼン]
[10/01 ダージリン]
[09/25 ゼン]
プロフィール
HN:
kawaハギ
年齢:
36
性別:
男性
誕生日:
1989/07/03
職業:
無職
趣味:
ゲーム 音楽
自己紹介:
人類を5次元意識へ押しあげる為のゲームを
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
カウンター