image.png
1.第一步:前面实现了飞机的射击系统以及运动系统,接下来要做的就是实现敌机的运动系统以及子弹击中敌机时的响应。所以我们要先让敌机动起来,这也需要脚本文件,我们同样在scripts文件夹里面创建一个名为EnemyController的C#脚本,双击之后进行编辑,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour
{
    //敌军飞船生命量
    public int Health = 100;
    //敌军飞船速度
    public float Speed = 1.0f;
    //保证飞船在上下左右移动
    public Vector3 MinMaxX = Vector3.zero;
    // Start is called before the first frame update
    void Start()
    {
        
    }
    // Update is called once per frame
    void Update()
    {
        transform.position = new Vector3(
            //Mathf.PingPong(A,B)其中A是个变化的值,B是取值所要的区间
            //随着A的变化,函数的取值再0到B之间变化,从0升到B,再从B降到0,反复循环。
            MinMaxX.x + Mathf.PingPong(Time.time * Speed, 1.0f) *
            (MinMaxX.y - MinMaxX.x),
            transform.position.y,
            transform.position.z
            );
    }
    //触发器的入口
    void OnTriggerEnter(Collider other)
    {
        Destroy(gameObject);
        Destroy(other.gameObject);
    }
}

2.第二步:编写并保存后,同样将本段代码拖到敌机的右边的检查器(Inspector)那一栏,这时便会看到EnemyController(scripts)可以调节移动属性,这里的敌机是在不断的左右移动。
在敌机以及可以移动了,并且飞机的移动以及射击系统完成后,接下来就是击中判定系统了,我这里做的是子弹击中敌机后,敌机便会消失,上面代码的最后已经写了关于敌机的触发器,接下来便是设置触发器,这里也是卡的我最久的时候,因为设置出问题的话,触发器便响应不了。

首先:我们点击敌机,敌机的组件有盒碰撞器,是否有刚体都无所谓,但一定要有碰撞器,同时这里碰撞器勾选是触发器(Is Trigger),
其次:我们选择Assets里面的ammo预设,双击它,进入ammo的右边的检查器(Inspector)那一栏,同样也需要盒碰撞器,如果没有的话,子弹会穿过去,就是这个卡了我很久,毕竟是小白一枚,同时也需要刚体,缺一不可。在设定好之后,子弹击中便会触发敌机的效应器,然后敌机便会消失。
image.png
image.png
这样三大部分就完成了,这是一个很小的游戏,但是真正的参与进开发却会发现很多问题,也学到很多,其实还有很多不足之处,包括背景,以及敌机数量,敌机运动轨迹,还有敌机发射子弹等等,后期我也会继续开发完善。


0qqppyvt
29 声望6 粉丝

引用和评论

0 条评论