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、障碍物设置
     添加碰撞器,并设置为触发器
在这里插入图片描述
创建一个脚本,挂载到障碍物上

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值