Unity 飞机大战(三)

(一)陨石运动

void Start()
    {
        _rigidbody = GetComponent<Rigidbody>();
        _rigidbody.velocity = Vector3.back * _Speed;
        _rigidbody.angularVelocity = Random.insideUnitSphere * _AngularVelocity;
    }

(二)随机产生敌人

写一个字符串数组用来保存用来实例化的敌人预制体的名字。只要玩家飞机还存在,就每秒产生一个陨石或者敌机。

在Start()里面写一句 InvokeRepeating("SpawnEnemy", 0, 1);

void SpawnEnemy()
    {
        if (_player != null)
        {
            ObjectPool.GetGameObject(_enemy[Random.Range(0,_enemy.Length)]).transform.position = new Vector3(Random.Range(_player._Boundary._xMin, _player._Boundary._xMax), 10, 16);
        }
    }

(三)敌机运动

限制敌机不飞出边界,并且实现敌机能够左右移动。

void EnemyMove()
    {
        _speedX = Mathf.MoveTowards(_speedX, _targetX, Time.deltaTime * _Speed);
        _rigidbody.velocity = new Vector3(_speedX, _rigidbody.velocity.y, _rigidbody.velocity.z);
        ClampPosition();
    }
void ClampPosition()
    {
        _rigidbody.position = new Vector3(Mathf.Clamp(_rigidbody.position.x, -7f, 7f),
            _rigidbody.position.y, _rigidbody.position.z);
    }
IEnumerator RandomX()
    {
        yield return new WaitForSeconds(0.5f);
        while (true)
        {
            _targetX = Random.Range(1, _MaxOffset) * -Mathf.Sign(_rigidbody.position.x);
            yield return new WaitForSeconds(Random.Range(_MinTime, _MaxTime));
            _targetX = 0;
            yield return new WaitForSeconds(Random.Range(_MinBackTime, _MaxBackTime));
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值