首页 > 其他分享 >一些额外功能的铺垫

一些额外功能的铺垫

时间:2024-07-14 11:56:52浏览次数:8  
标签:动画 功能 额外 铺垫 void public protected geo healthItem

public class Health : MonoBehaviour
{
    public Animator[] healthItem;
    public Animator geo;

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

    // Update is called once per frame
    public void Hurt()
    {
        // 当调用 Hurt 方法时,触发第一个 healthItem 动画的 "Hurt" 触发器
        healthItem[0].SetTrigger("Hurt");
    }

    public IEnumerator ShowHealthItems()
    {
        // 用协程逐个显示 healthItem 数组中的动画
        for (int i = 0; i < healthItem.Length; i++)
        {
            healthItem[i].SetTrigger("Respawn");
            yield return new WaitForSeconds(0.2f);
        }
        // 等待0.2秒后,播放 geo 动画的 "Enter" 状态
        yield return new WaitForSeconds(0.2f);
        geo.Play("Enter");
    }

    public void HideHealthItems()
    {
        // 播放 geo 动画的 "Exit" 状态
        geo.Play("Exit");
        // 逐个触发 healthItem 数组中动画的 "Hide" 触发器
        for (int i = 0; i < healthItem.Length; i++)
        {
            healthItem[i].SetTrigger("Hide");
        }
    }
}

代码功能解析:

1.变量声明和赋值:


2.Animator[] healthItem;:这是一个 Animator 类型的数组,用于存储健康物品的动画组件。
3.Animator geo;:这是一个单独的 Animator 类型变量,可能用于管理整体健康系统的动画效果。
6.Hurt 方法:


7.public void Hurt() 方法,当调用时会触发 healthItem 数组中第一个元素(索引为0)的动画,通过设置 "Hurt" 触发器。


8.ShowHealthItems 协程方法:


9.public IEnumerator ShowHealthItems() 是一个协程方法,用于逐个显示 healthItem 数组中的动画。
10.使用 SetTrigger("Respawn") 方法触发每个 healthItem 的 "Respawn" 触发器。
11.每次触发后,通过 yield return new WaitForSeconds(0.2f); 等待0.2秒,以实现逐个显示的效果。
12.完成显示后,再等待0.2秒后,播放 geo 对象的 "Enter" 动画状态。


13.HideHealthItems 方法:


14.public void HideHealthItems() 方法,用于隐藏所有的健康物品动画。
15.先播放 geo 对象的 "Exit" 动画状态。
16.然后逐个触发 healthItem 数组中每个动画的 "Hide" 触发器,以实现隐藏效果。

总结:
这段代码通过 Unity 中的 Animator 组件管理了健康系统的动画效果,包括受伤效果 (Hurt() 方法)、显示健康物品 (ShowHealthItems() 方法) 和隐藏健康物品 (HideHealthItems() 方法)。使用了协程来逐个控制动画的显示,并通过触发器来管理动画状态的切换,从而实现了一套健康系统的动画逻辑。

这段代码是一个2D游戏中的角色或物体的碰撞处理和一些额外金币掉落功能的实现。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class enemy : Breakable 
{
    int ranDomCount;
    
    GameObject coin;
    [SerializeField] protected int minSpawnCoins = 2;
    [SerializeField] protected  bool isFacingRight;
    [SerializeField] protected int maxSpawnCoins = 5;
    [SerializeField] protected float maxBumpXForce = 100;
    [SerializeField] protected float minBumpYForce = 300;
    [SerializeField] protected float maxBumpYForce = 500;
    [SerializeField] float moveX;
    Vector3 flippedScale = new Vector3(-1, 1, 1);

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

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


   protected  private void Direction()
    {
        if (moveX > 0)
        {
            transform.localScale = flippedScale;

        }
        else if (moveX < 0)
        {
            transform.localScale = Vector3.one;
        }
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        DetectCollisionEnter2D(collision);
    }
    protected virtual void  DetectCollisionEnter2D(Collision2D collision  )
    {
        if(collision .gameObject.layer == LayerMask.NameToLayer("HeroDetector")) 
                {
            FindAnyObjectByType<NewBehaviourScript>().Takedamage();
        }
        if(isDead&&collision.gameObject.layer==LayerMask.NameToLayer("Terrain")     )
        {
            GetComponent<Rigidbody2D>().bodyType = RigidbodyType2D.Static;
            GetComponent<BoxCollider2D>().enabled = false;
        }
    }
    protected override void  Dead()
    {
        base.Dead();
        SpawnCoins();
    }
    public virtual void SpawnCoins()
    {
        ranDomCount = Random.Range(minSpawnCoins, maxSpawnCoins);
        for(int i=0;i<ranDomCount;i++)
        {
            SpawnCoins方法:
17.
18.
csharp
19.
public virtual void SpawnCoins()
{
    ranDomCount = Random.Range(minSpawnCoins, maxSpawnCoins);
    for (int i = 0; i < ranDomCount; i++)
    {
        GameObject geo = Instantiate(coin, transform.position, Quaternion.identity, transform.parent);
        Vector2 force = new Vector2(Random.Range(-maxBumpXForce, maxBumpXForce), Random.Range(minBumpYForce, maxBumpYForce));
        geo.GetComponent<Rigidbody2D>().AddForce(force, ForceMode2D.Impulse);
    }
}
20.
这个方法生成一定数量的金币(或其他物品),并将它们随机散布在物体的位置附近。
每个金币都会添加一个随机的冲量,使它们看起来像是从物体周围的位置弹射出去。
综上所述,这段代码是一个基础的Unity脚本,处理物体的碰撞事件,并在物体死亡时生成金币。它利用了Unity的2D物理系统和随机数生成功能来实现游戏中的一些基本功能。

 

标签:动画,功能,额外,铺垫,void,public,protected,geo,healthItem
From: https://blog.csdn.net/2301_80679764/article/details/140414257

相关文章

  • 简单的ATM 注册,登录,存钱,取钱,管理员查看 功能的实现,register(注册方法),login(登录方法),lo
    1.main()方法publicclasstest{publicstaticvoidmain(String[]args){ArrayList<people>people=newArrayList<>();Scannerscanner=newScanner(System.in);while(true){System.out.println("......
  • 【java深入学习第5章】Spring Boot 中统一功能的实现与处理
    SpringBoot统一功能处理在开发Web应用程序时,为了提高代码的可维护性和可扩展性,我们通常会采用一些统一的功能处理方式。本文将介绍如何在SpringBoot中实现统一的数据返回格式、异常处理和功能处理,并通过一个图书管理系统的案例来演示这些功能的实现。一、统一数据返回格......
  • 阶段三:项目开发---民航功能模块实现:任务16:动态航线图
    任务描述内 容: 前面任务实现了由SparkStreaming实时接收Kafka中的数据进行清洗,并存入到了MySQL中,有了飞机的实时经纬度坐标等数据,接下来,开发前台页面并接入百度地图模块,实现飞机的动态航线图功能。学 时:6学时知识点:动态航线图功能实现,ECharts、Vue和iView熟悉重点:熟......
  • git的常用功能
    git的配置配置个人的用户名称和电子邮件地址:gitconfig--globaluser.name"yzhuar"[email protected]配置credentialhelper,并使用Http/Https传输$gitconfig--globalcredential.helperstore如果用了--global选项,那么更改的配置......
  • 自适应巡航控制(ACC)功能—巡航车速控制功能介绍
    1.背景介绍随着自动驾驶技术的发展和普及,自适应巡航控制(ACC)系统逐渐成为现代汽车的重要配置之一。ACC系统不仅可以大幅度提升驾驶的舒适性和安全性,还可以有效减少驾驶员在长途驾驶和拥堵交通中的疲劳感。在ACC系统中,巡航车速控制功能是其核心子功能之一,通过精确调节车辆速......
  • Eagle 4.0 更新了哪些功能,值得购买吗?
    这个全新的版本带来了一系列重磅级别的更新,包括全新的「插件系统」、「全新的UI风格」以及「AI工具」等。所有这些,都是为了提供给用户更加优质的使用体验,让工作的流程更加流畅,更加高效。我们的团队始终倾听用户的声音,通过不断的优化和改进,我们希望每一次的更新都能带给用户......
  • 【java登录锁定功能】redis实现登录失败锁定账号
    登录失败(账号密码<5次时不提示),>=5次时,锁定时间5min,最高密码错误次数为10,第十次密码输入错误后,提醒,“账号已停用,请联系管理员开通”,次日0时,重新计算错误次数代码实现publicstaticStringLOGIN_FAIL_LOCK="login:error:count:";publicstaticStringLOGIN......
  • 亚马逊ERP常用的三大功能 设置最大订单数 定时上下架 无库存采集
    亚马逊全功能ERP最常用的三大功能:批量设置最大订单数量、批量定时上下架、不限店铺、不限子账号、无库存采集。今天我将为大家详细介绍亚马逊卖家最常使用的三大功能:批量设置最大订单数量、批量定时上下架以及无库存采集。·首先来探讨批量设置最大订单数量这一功能,这个功能......
  • 给你的博客添加数据统计功能
    20.数据统计我们可以给博客添加统计功能,这里以百度统计和谷歌统计为例。‍百度统计‍添加网站登陆百度统计后台:百度统计——一站式智能数据分析与应用平台,并登录,然后进入产品:​​‍在使用设置--网站列表中,点击新增网站:​‍添加网站域名、网站首页等信息:​‍引用代......
  • 深入解析香橙派 AIpro开发板:功能、性能与应用场景全面测评
    文章目录引言香橙派AIpro开发板介绍到手第一感觉开发板正面开发板背面性能应用场景移植操作系统香橙派AIpro开发板支持哪些操作系统?烧写操作系统到SD卡中启动开发板的步骤查看系统提供的事例程序体验——开发的简洁性视频播放展示ffmpeg简介ffmpeg播放视频安装ffmpeg......