Unity 飞机大战(一)

(一)游戏背景

创建两个Quad用来做背景,主相机设置为正交镜头。

 给背景添加脚本让其向下运动,使得看上去飞机在往前飞。并且背景能够一直循环。

void GroundMove()
    {
        transform.position = new Vector3(0, 0, -Mathf.Repeat(Time.time * _Speed, 30f));
    }

(二)玩家飞机运动

限制玩家飞机不飞出游戏边界。

void ClampPosition()
    {
        _rigidbody.position = new Vector3(Mathf.Clamp(_rigidbody.position.x, _Boundary._xMin, _Boundary._xMax),
            _rigidbody.position.y,
            Mathf.Clamp(_rigidbody.position.z, _Boundary._zMin, _Boundary._zMax));
    }

 飞机左右移动时,飞机会左右倾斜

void Rotate()
    {
        _rigidbody.rotation = Quaternion.Euler(new Vector3(0, 0, -_rigidbody.velocity.x * _RotationAngle / _Speed));
    }

控制飞机移动

void ClampPosition()
    {
        _rigidbody.position = new Vector3(Mathf.Clamp(_rigidbody.position.x, _Boundary._xMin, _Boundary._xMax),
            _rigidbody.position.y,
            Mathf.Clamp(_rigidbody.position.z, _Boundary._zMin, _Boundary._zMax));
    }

 (三)玩家子弹运动

因为玩家和敌人都能发射子弹,所以在玩家的子弹脚本里,使用virtual以便以后给子弹运动方法重写。

protected void Shoot()
    {
        _rigidbody = GetComponent<Rigidbody>();
        Move();
    }
    public virtual void Move()
    {
        _rigidbody.velocity = Vector3.forward * _Speed;
    }

(四)玩家飞机发射子弹

鼠标左键射击,按住不松,并且每隔一个时间间断发射子弹。同时还有射击音效。

将子弹设置为预制体,射击时进行实例化。给玩家飞机添加AudioSource组件。

void Fire()
    {
        _cd += Time.deltaTime;
        if (Input.GetMouseButton(0) && _cd > _CD)
        {
            _cd = 0;
            Instantiate(_Bullet, _FirePosition.position, Quaternion.identity);
            _audioSource.Play();
        }
    }

(五)边界清除

将子弹和以后会做的陨石和敌机在飞出边界后会被Destroy

private void OnTriggerExit(Collider collider)
    {
        Destroy(collider.gameObject);
    }

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值