Unity代码实现角色碰到障碍物,损失血量或死亡

这篇具有很好参考价值的文章主要介绍了Unity代码实现角色碰到障碍物,损失血量或死亡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity代码实现角色碰到障碍物,损失血量或死亡

1、角色设置
在PlayerController脚本中(挂载在角色上)

public class PlayerControler : MonoBehaviour
{
    private Rigidbody2D rbody;
    private CapsuleCollider2D cCollider;
    private int maxHealth=4;
    public int MyMaxHealth
    {
      get { return maxHealth; }
     }
    private int currentHealth;
    public int MyCurrentHealth
    {
      get { return currentHealth; }
     }
    void Start()
    {
      currentHealth = 4;
      rbody = GetComponent<Rigidbody2D>();
    }

    public void ReduceHealth(int health)
    {
      currentHealth = Mathf.Clamp(currentHealth - health, 0, maxHealth);
//Mathf.Clamp(表达式,最小值,最大值);这会将结果限制在最大值和最小值之间
    }

//该函数用于当当前血量为0时,销毁角色自身,并切换场景,可根据游戏需要自行设计
    public void death()
   {
     if (currentHealth == 0)
     {
        Destroy(gameObject);
        SceneManager.LoadScene("Menu");

     }
   }
}

     maxHealth:最大血量,用于约束角色血量不超过最大血量
     currentHealth:当前血量,用于记录角色血量变化
     在Start函数中设置当前血量为最大血量
     编写一个减少血量的函数,参数为碰到障碍与减少的血量,和死亡判断函数
(函数一定要设为public,因为在别的脚本需要调用)
2、障碍物设置
     添加碰撞器,并设置为触发器
Unity代码实现角色碰到障碍物,损失血量或死亡,Unity3D游戏制作基础知识,unity,游戏引擎
创建一个脚本,挂载到障碍物上

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

public class testshroom : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
       // Debug.Log("进去");
        //下面是判断与障碍碰撞的是不是主角,如果是则调用PlayerController中减少血量的函数
        PlayerControler pc = other.GetComponent<PlayerControler>();
        if (pc!=null)
        {
           // Debug.Log("碰到我啦");
            pc.ReduceHealth(5);
            if (pc.MyCurrentHealth == 0)//判断血量是否为零,为零则死亡
            {
                pc.death();                
            }
            //障碍物被碰撞后会销毁
            Destroy(gameObject);
        }
    }
}

如有问题,欢迎讨论 o()o文章来源地址https://www.toymoban.com/news/detail-519373.html

到了这里,关于Unity代码实现角色碰到障碍物,损失血量或死亡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D物体自动躲避障碍物

            2017.4.4f1         物体向前发射一个射线,检测到碰撞后,根据碰撞信息选择新的方向。最终结果如下。 通过发射虚拟胶囊体来检测碰撞api bool Physics.CapsuleCast (Vector3 point1, Vector3 point2, float radius, Vector3 direction, out RaycastHit hit, float maxDistance)  points参数如图所示,

    2023年04月24日
    浏览(66)
  • 百度Apollo规划算法——OBB障碍物检测代码解析

    本文主要分析Apollo代码中函数 bool Box::HasOverlap(const Box2d box) const {} 的数学原理。 在阅读此部分代码时,第一遍没看懂return的一堆什么意思,百度之后说是采用OBB原理,所以就去了解下OBB原理,回来看还是没太明白,直到看到了博客[1],通过博主的图解才有了进一步的了解,但

    2024年02月14日
    浏览(39)
  • Python 动态规划 实现机器人躲避障碍物获取最短路径

    要设计一种算法来寻找机器人从左上角移动到右下角的路径,可以使用动态规划来解决这个问题。下面是一种可能的算法: 创建一个处理机器人运动的函数 find_path ,函数接受一个矩阵 grid 作为参数,用于表示机器人移动的网格环境,该矩阵一个由 0 和 1 组成的二位列表,其

    2024年04月09日
    浏览(44)
  • 10.Unity2D 横版 简单AI 之 敌人随机移动+自动巡逻+障碍物跳跃+悬崖处转身+射线检测

    总目录 9.Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人发起攻击(索敌)+对象池优化+主角受伤死亡_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客 Unity2D 简单AI 之 敌人跳跃条件优化+自动范围内检测敌人攻击+敌人二连击。在敌人预制体下,创建空物体EnemyCanAttack,改成不

    2023年04月20日
    浏览(47)
  • apollo自动驾驶进阶学习之:如何实现十字路口左转障碍物绕行

    首先需要理解Planning模块是基于Scenario、Stage、Task这样的层次来进行的,即:场景-步骤-具体的决策方法。Apollo可以应对自动驾驶所面临的不同道路场景,都是通过Scenario统一注册与管理。Scenario通过一个有限状态机来判断选择当前行车场景,每个Scenario下又有多个Stage,指当前

    2024年02月12日
    浏览(47)
  • 【MATLAB源码-第64期】matlab基于DWA算法的机器人局部路径规划包含动态障碍物和静态障碍物。

    动态窗口法(Dynamic Window Approach,DWA)是一种局部路径规划算法,常用于移动机器人的导航和避障。这种方法能够考虑机器人的动态约束,帮助机器人在复杂环境中安全、高效地移动。下面是DWA算法的详细描述: 1. 动态窗口的概念 动态窗口法的核心概念是“动态窗口”,这是

    2024年02月05日
    浏览(53)
  • ros机器人在navigation下导航costmap_2d动态层(障碍物层)障碍物无法及时消除的情况解决办法

    设备 杉川-3a激光雷达 win10笔记本电脑 ubuntu18.04 ros-melodic 问题 ros机器人在move_base下导航,有静态图层与动态图层,静态图层显示之前已经建立好的地图,而动态层显示现在激光雷达实时扫描到的障碍物。 假设机器人雷达最大范围为8m,在某一时刻,以机器人为原点,在机器人

    2024年02月06日
    浏览(43)
  • Fluent案例1- 空气流经障碍物-3D模拟

    目录 1. 构建几何模型 2. 生成网格  2.1 生成六面体网格 2.2 生成四面体网格 2.3 生成多面体网格 3. 模拟设置 4. 后处理 4.1 查看不同网格下的压力与速度分布 4.2  查看wall上压力分布 5. 总结  前面的博客介绍了2D的模拟操作步骤,接下来进行3D的建模与计算 将之前建好的2D模型导

    2024年02月11日
    浏览(57)
  • 第九章动态规划——不同路径(二)有障碍物

    目录 力扣题号:63. 不同路径 II - 力扣(LeetCode) 题目描述 示例 提示 思路 解法一:动态规划 (1)dp数组的下标及其含义 (2)确定递推公式 (3)初始化递推数组 (4)确定遍历顺序 (5)根据题意推出dp数组对照 障碍物处理 代码实现 总结 注:下述题目描述和示例均来自力

    2024年04月23日
    浏览(34)
  • Apollo规划决策算法仿真调试(5):动态障碍物绕行

    Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。Apollo 自动驾驶开放平台为开发者提供了丰富的车辆、硬件选择,强大的环境感知、高精定位、路径规划、车辆控制等

    2024年02月09日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包