開発メモ 「オブジェクトの生成(Instantiate),パーティクルシステム(Particle)」
オブジェクトの生成(Instantiate)は,よく使用するので、メモ。
あと、
エラーでつまずいていた「particlesystem」についても...。
①敵を1体ずつ出現させる方法。
***************************************************************************
#pragma strict
var enemyPrefab : GameObject;//出現させたい敵の種類
private var currentEnemy : GameObject;//1度に1体の敵しか出現しない
function Update (){
//まだ敵が出現していないなら発生させる
if(!currentEnemy){
currentEnemy = Instantiate(enemyPrefab, transform.position, transform.rotation);
}
}
***************************************************************************
②弾を画面の中央から発射。
***************************************************************************
#pragma strict
var bulletPrefab : GameObject;
var player : GameObject;
var bulletEmitter : GameObject;
function Awake(){
player = GameObject.FindWithTag("MainCamera");
}
function Update(){
if(Input.GetButtonDown("Fire1")){
var bullet : GameObject = Instantiate(bulletPrefab,transform.position,Quaternion.identity);//弾の生成
var centerPosition : Vector3 = Vector3(Screen.width / 2,Screen.height / 2, 30);//生成する位置(スクリーン座標)
//スクリーン座標からワールド座標に変換(camera.ScreenToWorldPoint()にスクリーン座標のベクトルを指定)
var worldPoint = camera.ScreenToWorldPoint(centerPosition);
bullet.rigidbody.AddForce((worldPoint - transform.position).normalized * 1000.0 ,ForceMode.Force );//弾に力を加える
PlayParticles();
}
}
function PlayParticles(){
Instantiate(bulletEmitter, transform.position, transform.rotation);
Destroy(gameObject.Find("Flash01(Clone)"),0.1);
}
***************************************************************************
①は、おk。
②は、パーティクルシステムについて。
つまずいていた点は、
パーティクルシステムをPrefabにアタッチしたものを用いるとき、
var bulletEmitter : ParticleEmitter;
にしてしまっていたから、できなかった。
正解は、
var bulletEmitter : GameObject;
であって、変数の型が間違っていた。
Prefabの場合はGameObjectに。
すごくしょうもないことだが、悩みまくった。
うん。
まぁ、解決してよかった。
一生、パーティクルシステムを使用できないところだった...。