004_生命修改和触发器

004_生命修改和触发器

生命修改

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.PlayerLoop;

public class RubyController : MonoBehaviour
{
    //最大生命值
    public int maxHealth = 5;

    //当前生命值
    public int currentHealth;

    // 将速度暴露出来,使其可调
    public float speed = 4f;

    //声明刚体对象
    Rigidbody2D rigidbody2D;
    //获取用户输入
    float horizontal;
    float vertical;

    // 在第一次帧更新之前调用 Start
    void Start()
    {
        //获取当前游戏对象的刚体组件
        rigidbody2D = GetComponent<Rigidbody2D>();
        //游戏开始,玩家满血
        currentHealth = maxHealth;
    }

    // 每帧调用一次 Update
    void Update()
    {
        /* 根据按键移动上下左右的位置:每帧移动0.1 */
        //获取水平输入,按向左会获得-1.0f,按向右会获得1.0f
        horizontal = Input.GetAxis("Horizontal");
        //获取垂直输入按向下会获得-1.0f,按向上会获得1.0f
        vertical = Input.GetAxis("Vertical");
    }

    //固定时间间隔执行的更新方法
    private void FixedUpdate()
    {
        //获取对象当前位置
        Vector2 position = rigidbody2D.position;
        //更改位置,Time.deltaTime 每帧的时间间隔,float 类型
        position.x = position.x + speed * horizontal * Time.deltaTime;
        position.y = position.y + speed * vertical * Time.deltaTime;
        //新位置给游戏对象
        rigidbody2D.position = position;

        ChangeHealth(1);
    }

    //更改生命值的方法
    void ChangeHealth(int amount)
    {
        //限制方法,限制当前生命值的赋值范围:0~最大生命值
        currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);
        Debug.Log("当前生命值:" + currentHealth + "/" + maxHealth);
    }


}

posted @   爱吃冰激凌的黄某某  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示