学习目标:

参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili

上一篇文章:【Unity2D】简单实现相机跟随Player功能以及攻击敌人时相机抖动_dangoxiba的博客-CSDN博客学习目标:简单实现相机跟随Player功能参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili秦无邪OvO,独立游戏开发者/美术/编曲;秦无邪OvO的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/335835274?from=search&seid=2940030192624790742&spm_id_from=333.337.0.0我的上一篇文章:【Unity2D】实现敌人https://blog.csdn.net/dangoxiba/article/details/122704761


学习内容:

实现Unity中Player受伤以及闪烁特效,实现的方法很简单,首先要了解一个SpriteRenderer,这个就是会给该游戏对象添加图片的Sprite精灵关掉后:


代码展示:

在Player中添加一个新脚本叫PlayerHealth,然后给它设置参数以及碰撞方法

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

public class PlayerHealth : MonoBehaviour
{
    public int health;
    public float blinkTime;
    public int blinks;

private Renderer myRender;
    void Start()
    {
        myRender = GetComponent<Renderer>();
    }

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

public void DamagePlayer(int damage)
    {
        health -= damage;
        if(health <= 0)
        {
            Destroy(gameObject);
        }
        BlinkPlayer(blinks,blinkTime);
    }
    void BlinkPlayer(int numBlinks,float seconds)
    {
        StartCoroutine(DoBlinks(numBlinks, seconds));
    }
    IEnumerator DoBlinks(int numBlinks, float seconds)
    {
        for (int i = 0; i < numBlinks * 2; i++)
        {
            myRender.enabled = !myRender.enabled;
            yield return new WaitForSeconds(seconds);
        }
        myRender.enabled = true;
    }
}
然后再Enemy脚本中设置碰撞方法

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

public abstract class Enemy : MonoBehaviour
{
    public int health;
    public int damage;
    public float changeTime;

public GameObject bloodEffect;
    public PlayerHealth playerHealth;

private SpriteRenderer sr;
    private Color originColor;
    public void Start()
    {
        playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>();
        sr = GetComponent<SpriteRenderer>();
        originColor = sr.color;
    }

public void Update()
    {
        if(health <= 0)
        {
            Destroy(gameObject);
        }
    }
    public void TakeDamage(int damage)
    {
        health -= damage;
        FlashColor(changeTime);
        Instantiate(bloodEffect, 
            new Vector3(transform.position.x , transform.position.y + 0.5f, transform.position.z),
            Quaternion.identity);
        GameController.cameraShake.Shake();
    }

void FlashColor(float time)
    {
        //分别对应着R,G,B,透明度
        sr.color = new Color(255, 255, 0, 255);
        Invoke("ResetColor", time);
    }

void ResetColor()
    {
        sr.color = originColor;
    }

private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.gameObject.CompareTag("Player") &&
            other.GetType().ToString() == "UnityEngine.CapsuleCollider2D")
        {
            if(playerHealth != null)
            {
                playerHealth.DamagePlayer(damage);
            }
        }
    }
}

学习产出:

先设置好参数。

闪烁成功,当health变为0时人物也会消失。

void BlinkPlayer(int numBlinks,float seconds)
    {
        StartCoroutine(DoBlinks(numBlinks, seconds));
    }
    IEnumerator DoBlinks(int numBlinks, float seconds)
    {
        for (int i = 0; i < numBlinks * 2; i++)
        {
            myRender.enabled = !myRender.enabled;
            yield return new WaitForSeconds(seconds);
        }
        myRender.enabled = true;

这段通过协成延迟调用DoBlinks(int numBlinks, float seconds),然后再for循环中,每次循环时取消组件的Sprite Renderer让它变透明,再隔一段时间恢复,看起来就像闪烁。

private void OnTriggerEnter2D(Collider2D other)
    {
        if(other.gameObject.CompareTag("Player") &&
            other.GetType().ToString() == "UnityEngine.CapsuleCollider2D")

判断是否是玩家:标签是Player,并且发生碰撞的是组件CapsuleCollider2D,并且非空对象

【Unity2D】实现Unity中Player受伤以及闪烁特效相关推荐

  1. unity中物体受伤时切换受伤图片

    using UnityEngine; public class Enemy : MonoBehaviour {private SpriteRenderer render;public Sprite[] ...

  2. unity 程序win7在进程里运行_Win7系统中unity web player是什么程序

    unity web player是什么程序,可不可以卸载?下面教程给大家详细讲解"unity web player"程序.以及可以不可以卸载!一起去看看吧! 如果你安装好Win7没 ...

  3. unity 程序win7在进程里运行_win7系统中出现的unity web player是什么程序?

    当我们使用不纯净的win7系统安装包重新安装win7系统的时候,就会有一些不知名的程序运行在系统中,最近就有一位小伙伴问小编,说他的电脑有一个叫做"Unity Web Player" ...

  4. 【VR开发】Unity中VR开发的基本设置-如何设置Player视角

    [背景] 上一篇博文,我们通过导入需要的插件完成了Unity中VR开发的环境准备,接下来就需要在项目中真正着手布局VR,首先就是作为玩家的视角如何导入. [设置方法] 在Hierarchy中新建一个空 ...

  5. 在unity中创建python机器学习环境

    # 创建一个新的学习环境 本教程将介绍创建unity环境的过程 unity环境是使用unity引擎来训练增强学习代理器的应用 设置unity项目 1. 打开一个项目导入unity机器学习包, 或者新建 ...

  6. Unity中调用手机中的粘贴功能

    最近有个小需求,就是点击一个按钮,然后复制整个文本中的内容..然后根据网上大神们的教程找到了思路.. https://blog.csdn.net/u011416077/article/details/ ...

  7. Unity中使用WebView

    Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...

  8. Unity中Oculus分屏相机和普通相机一键切换

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50462157 作者:car ...

  9. unity中创建游戏场景_在Unity中创建Beat Em Up游戏

    unity中创建游戏场景 Learn how to use Unity to create a 3D Beat Em Up game in this full tutorial from Awesom ...

最新文章

  1. 【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )
  2. C语言库函数(Q类字母)
  3. 如何创建一张表mysql_如何创建一张规范的MySQL表
  4. C++各大著名程序库
  5. robo3t 连接服务器数据库_Win7上安装 MongoDB、Robo 3T及vn.py
  6. python 面向对象 私有化浅析
  7. Node — 第八天 (大事件项目接口实现二)
  8. 反射的妙用-类名方法名做参数进行方法调用实例demo
  9. python字符串的内建函数_Python 的字符串内建函数
  10. 2018抖音数据研究报告完整版,你喜欢的网红画像到底是怎样?
  11. keras安装不成功超时
  12. 计算机推免资源(不定期更新)
  13. 云计算和计算机应用的区别,普适计算与云计算的区别
  14. python fun函数、求4x4整型数组的主对角线元素的和_输入4行4列的二维数组,求计算主对角线各元素之和,计算副对角线各元素之和。...
  15. 论文复现—1—A Simple yet Effective Relation Information Guided Approach for Few-Shot Relation Extraction
  16. 交付给事业多少,你就能成就多少事业
  17. 基于Python的新闻聚合网站设计与实现
  18. 多线程实现火车站卖票
  19. Allied World Re任命黄耀铭(Yeo Meng Wong)担任亚太合约再保险部门高级副总裁兼总经理
  20. 在微信浏览器中做分享到朋友圈和分享到好友

热门文章

  1. 用第三方实现百度语音识别与二维码生成
  2. 视觉SLAM十四讲学习笔记 第7讲 视觉里程计
  3. 神经网络——BP学习算法:反向传播算法推导
  4. 4月4日我儿子和我过生日,共享快乐。顺便贡献多年写的delphi数据库封装原代码。
  5. 专利申请的流程及好处
  6. 南华大学第十五届ACM程序设计竞赛(重现赛)E 免费机票(单边最短路)
  7. Host key verification failed 问题解决
  8. CRC16 Modbus计算原理与代码实现
  9. 深入学习setState
  10. 【面经】2022互联网算法岗面试总结