シヴァのブログ

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

開発メモ 「一定時間で敵がプレイヤーに弾を発射」

「Unity 敵 攻撃 シューティング」

で、検索して、このブログを見てくれた人がいるので、

方法を載せときます。

***************************************************************************

#pragma strict
//敵の弾を発射させるためのスクリプト

//MainCameraがプレイヤーとする.
//プレイヤーの方向に向く,敵の攻撃頻度の計算(Update)
//攻撃頻度に合わせて弾の発射(Shoot)
//プレイヤーに衝突すると,ダメージと弾の消去(OnCollisionEnter)

var LookAtTarget : Transform;//プレイヤーを設定
var damp = 6.0;
var bullitPrefab : Transform;//弾のプレファブを設定
var savedTime = 0;//弾の発射頻度

function Update(){
    if(LookAtTarget){
        var rotate = Quaternion.LookRotation(LookAtTarget.position - transform.position);
       
        transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
       
        var seconds : int = Time.time;
        var oddeven = (seconds % 2);
       
        if(oddeven){
            Shoot(seconds);
        }
    }
    transform.LookAt(LookAtTarget);
}

function Shoot(seconds){
    if(seconds != savedTime){
        var bullit = Instantiate(bullitPrefab, transform.Find("spawnPoint").transform.position,
                                Quaternion.identity);
        //bullit.gameObject.tag = "enemyProjectile";
        bullit.rigidbody.AddForce(transform.forward * 1000);
        savedTime=seconds;
    }
}

function OnCollisionEnter(other : Collision){
    //var player : GameObject = GameObject.FindWithTag("MainCamera");
    if(other.gameObject.tag == "MainCamera"){
        //player.SendMessage("ApplyDamage",1);
        yield WaitForSeconds(0.3);
        Destroy(gameObject);
    }
}

***************************************************************************

var savedTime = 0;

が、弾の発射頻度なので、設定数値を変えて使用して下さい。

 

終わり。