子弹控制+人物血量管理+血条UI显示

子弹控制

在子弹上添加脚本Ryun_BulletController

进行物体碰撞后触发,首先要给子弹一个Capsule Collider,再给敌人和玩家分别给一个碰撞体。

编写一个OnCollisionEnter函数

结尾需带上:

Destory(this.gameobject)

为了防止比如敌人发射的子弹给自己造成伤害,我们在开头定义一个枚举类型来加以区分:

public enum BulletType{
Player_Bullet=0,
Enemy_Bullet=1,
}

在Start函数里我们默认这个BulletType为Player_Bullet。

关于Ryun_BulletController的具体代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum BulletType
{
   Player_Bullet = 0,
   Enemy_Bullet = 1,
}


public class Ryun_BulletController : MonoBehaviour
{
   public BulletType bulletType = BulletType.Player_Bullet;
   public float damagevalue = 10;

// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

}

private void OnCollisionEnter(Collision collision)
 {
   switch (bulletType)//利用一个switch条件语句
   {

     case BulletType.Enemy_Bullet:
     if (collision.gameObject.CompareTag("Player")) 
     {
        collision.gameObject.GetComponent<Ryun_HealthControl>().Damage(damagevalue);


     }
   break;

      case BulletType.Player_Bullet:
      if (collision.gameObject.CompareTag("Enemy"))
     {

        collision.gameObject.GetComponent<Ryun_HealthControl>().Damage(damagevalue);
     }

   break;


   }

   Destroy(this.gameObject);

 }
}

注:关于OnCollisionEnter方法和OnTriggerEnter

OnCollisionEnter方法被触发要符合以下条件

1 碰撞双方必须是碰撞体

2 碰撞的主动方必须是刚体,注意我的用词是主动方,而不是被动方

3 刚体不能勾选IsKinematic

4 碰撞体不能够勾选IsTigger

OnCollisionEnter方法的形参对象指的是碰撞双方中没有携带OnCollisionEnter方法的一方

OnTriggerEnter触发条件:

  1. 碰撞双方都必须是碰撞体

  1. 碰撞双方其中一个碰撞体必须勾选IsTigger选项

  1. 碰撞双方其中一个必须是刚体

  1. 刚体的IsKinematic选项可以勾选也可以不勾选

只要满足上面两个条件,不管谁主动都会触发,OnTriggerEnter方法的形参对象指的是碰撞双方中没有携带OnTriggerEnter方法的一方

————————————————

版权声明:本文为CSDN博主「xianhua7877」的原创文章,遵循CC 4.0 BY-SA版权协议,转载链接:

原文链接:https://blog.csdn.net/xianhua7877/article/details/81559955

血量管理

我们再设置人物PH值,通过脚本实现子弹射击导致的血量变化:

如下为 建好后Ryun_HealthControl的具体脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ryun_HealthControl : MonoBehaviour
{
   public float PH = 100;
// Start is called before the first frame update
void Start()
{

}

// Update is called once per frame
void Update()
{

}
   public void Damage(float damage)//形参
  {
    if (PH > 0)
    {
      PH -= damage;

    }
    else
    {


    }

   }
}

将脚本绑定到Player以及Enemy上后,我们需要在Ryun_BulletController里调用这个脚本的函数

血条UI显示

  • 之前做好的Canvas_GameUI,我们将之前做好的Canvas下的PH_slider复制给它,重新命名为PlayerPH_slider.

  • 调整slider的位置,将其放在左下角

  • 调整血条的长度和宽度

如下图所示:

在Ryun_Health Control脚本里新建如下代码,并将其放到Damge(float damage)函数里

using UnityEngine.UI;
写一个public Slider PH_Slider;
写一个public float maxPH=100;
在Start函数里设置
if( PH_Slider)
{
PH_Slider.value=PH/maxPH*PH_Slider.maxValue;
}

返回场景,将Player的PlayerPH_Slider赋给PH_Slider

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值