Unity3D战斗系统中的血条表现与伤害判定

Blood Slot Display and Damage

Introduction

在战斗系统中,血条显示必不可少,而伤害的浮动数值表现也与血条相辅相成。这个DEMO主要实现了简单的战斗中血条表现与伤害数值浮动显示

Blood Slot

在Unity3D中可以用UGUI中的Slider简单实现一个血条UI:

  • 创建一个Canvas与Slider,并删除Slider中的Handle Slide Area
  • 设置Target Grahpic为Fill组件,并选择想要的血条覆盖色(如红色)
  • 设置Slider最大值
  • 修改Background与Fill的Rect Transform,全部置0,保证覆盖色能覆盖整个血条
  • 设置覆盖方向(Left to Right or oppsite)
  • 拖动Value条即可看见血条变化

有了血条UI后,接下来的工作就是将血条与角色结核。这里可以直接在角色的Class中添加一个UI的Slider变量然后绑定到一个Slider控件上,也可以封装一层Blood类当做控制器用于管理血条,解耦合,避免角色对于UI控件的直接操作。不管怎么实现,最重要的都是:

  • 实现其中的onIsHited方法来控制血条值
  • 实现BloodValueChange来改变UI的血条变化

onIsHited的代码主要如下:

//Blood.onHited(float damage)
public void onIsHited(float damage)
{
    bloodValue -= damage;
    if (bloodValue < BLOOD_VALUE_MIN) 
    {
        bloodValue = BLOOD_VALUE_MIN;
    }
    bloodDisplay.BloodValueChange(bloodValue);
}

而BloodValueChange则通过Tween插件来做:

public void BloodValueChange(float newBloodValue)
{
 
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D ,可以使用碰撞器(Collider)和射线投射(Raycasting)来进行模型接触地面的判定。 一种常见的方法是给模型添加一个碰撞器组件,例如 Box Collider、Sphere Collider 或 Capsule Collider。这些碰撞器将与场景的其他碰撞器进行交互,当模型接触地面时,可以通过检测碰撞器的触发事件或碰撞事件来判断。 另一种方法是使用射线投射来检测模型与地面的接触。射线投射是指从模型的底部发出一条射线,如果射线与地面相交,则表示模型接触到地面。可以使用 Physics.Raycast 或 Physics.RaycastAll 方法进行射线投射,并检查返回的结果来判断是否接触到地面。 以下是一个示例代码,演示如何使用射线投射来判定模型是否接触到地面: ```c# using UnityEngine; public class GroundDetection : MonoBehaviour { public float raycastDistance = 1.0f; private void Update() { // 发射射线 Ray ray = new Ray(transform.position, Vector3.down); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, raycastDistance)) { // 如果射线击了地面,进行相应的处理 Debug.Log("Model is touching the ground."); } } } ``` 在这个示例,我们使用 Update 方法每帧都会发射一条射线,射线从模型的底部向下发射,如果射线击了地面,就会在控制台输出"Model is touching the ground."的消息。 希望这个例子能帮到你!如果还有其他问题,请随时告诉我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值