2D小游戏——敌人攻击

2019-03-17  本文已影响0人  GZoO
简单射击
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Attack : MonoBehaviour {
    public GameObject bullet;//存放子弹的预制件

    private GameObject m_player;//玩家
    // Use this for initialization
    void Start () {
        m_player = GameObject.FindWithTag(Tags.Player);

        Invoke("GoAttack",2);
    }

    private void GoAttack()
    {
        ShowTheBullet(m_player.transform.position);
        //不定时启动攻击动作
        Invoke("GoAttack", Random.Range(0.5f, 3f));
    }

    //射击
    private void ShowTheBullet(Vector3 target)
    {
        GameObject _bullet = Instantiate(bullet, transform.position, Quaternion.identity);
        //子弹的行进方向为自身到玩家的向量,以此方向给子弹一个大小为25的力
        _bullet.GetComponent<Rigidbody2D>().AddForce((target - _bullet.transform.position) * 25);
    }
}

变化一


   private void GoAttack()
    {
        //一次性发射固定数量的子弹
        for (int i = 0; i < 5; ++i)
        {
            Vector3 temp = m_player.transform.position;
            temp.x += i * 0.5f;
            ShowTheBullet(temp);
        }

        Invoke("GoAttack", Random.Range(0.5f, 3f));
    }

变化二

    private int count;
    private void GoAttack()
    {
        Vector3 temp = m_player.transform.position;
        temp.x += count * 0.3f;
        count++;
        ShowTheBullet(temp);
        if (count == 5)
        {
            count = 0;
            Invoke("GoAttack", Random.Range(1f, 3f));
        }
        else
        {
            Invoke("GoAttack", 0.15f);
        }
    }
上一篇下一篇

猜你喜欢

热点阅读