Unity3D--小程序4--金色的子弹

  在场景中建立子弹,以及一个打击目标,目标具备一定的生命值(HP),当生命值将为0时,目标被击落并消失。

1.  新建一个球体Sphere当子弹,将其命名为Bullet。

  调整其大小和材质(比如金色),并确保它具有碰撞体"Collider"属性,以及勾选“Is Trigger”属性。只有勾选了“Is Trigger”,Bullet.cs脚本中的OnTriggerEnter函数才会起作用。

  

  2. 新建一个子弹的程序Bullet.cs。其中的OnTriggerEnter(Collider other)函数中,检测子弹打到的物体上是否挂载有BulletTarget脚本,如果有,才是子弹的目标,否则仅仅让子弹消失,不做任何动作处理。 

public class Bullet : MonoBehaviour
{//子弹脚本,挂在子弹身上
    public float moveSpeed=10; //子弹移动速度
    void Start()
    {
        Destroy(gameObject,5f);//不管有没有打到东西,子弹在场景5秒钟就消失
    }

    void Update()
    {//子弹一旦进入场景,就向着自己的前方飞
        transform.Translate(Vector3.forward*moveSpeed*Time.deltaTime,Space.Self);
    }

    private void OnTriggerEnter(Collider other)
    {//当子弹碰撞到其他物体
        Destroy(gameObject); //不管碰到什么,都让子弹消失
        var target = other.gameObject.GetComponent<BulletTarget>();
        //尝试载入被子弹打到的BulletTarget脚本,如果目标挂有这个脚本,就扣除目标的血量
        if (target == null)
            return;
        target.HP -= 10;
    }
}

3. 将第2步的Bullet程序拖拽到金色的Bullet模型上。

4. 将修改完成的子弹模型拖入Assets文件夹内,它就被保存为一个预制体(Prefab)。之后还需要删除场景中的子弹模型,使之不会出现在开场游戏界面中。 

5. 别忘了之前我们建立的第一人称控制器中,有一段关于子弹的代码被注释了,打开那段代码后,需要把上面存的"子弹预制体"拖到第一人称控制器的Inspector中,赋值给BulletTemplate变量。

6. BulletTarget.cs 脚本如下,将此脚本挂载在一切你希望成为子弹目标的对象上。值得注意的是,子弹的目标上还需要挂在Rigidbody组件。

public class BulletTarget : MonoBehaviour
{//子弹的目标
    public float HP;
    void Start()
    {
        HP = 100;
    }

    // Update is called once per frame
    void Update()
    {
        if (HP <= 0)
        {
        var rig = gameObject.transform.GetComponent<Rigidbody>();
        //获取目标上挂的Rigidbody组件
        rig.useGravity = true; //将重力设置为true
        Destroy(gameObject,1f);            
        }
    }
}

7. 在场景中,建立子弹目标对象,并加载BulletTarget.cs脚本。需要注意:

(1)子弹目标对象必须具备Collider(碰撞体),不然子弹检测不到;

(2)子弹目标对象必须添加Rigidbody(刚体)属性,并取消重力勾选(否则就没有掉落的效果了)。

 8. 在后文添加了UI界面、主角控制脚本之后,可以设置击落目标后给主角加分。之后再修改BulletTarget.cs,用于显示分数和目前的状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值