シヴァのブログ

UnityやUE4や趣味とかいろいろ...

開発メモ 「オブジェクトの生成(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に。

すごくしょうもないことだが、悩みまくった。

 

 

うん。

まぁ、解決してよかった。

一生、パーティクルシステムを使用できないところだった...。