简单射击
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);
}
}