[2021.10.28]<呆头熊的开发日记>怪物AI

这篇博客详细介绍了Unity3D中编写敌人脚本的实现过程,包括敌人受到伤害后的红色闪烁特效、粒子系统模拟流血效果,以及玩家与敌人碰撞时触发玩家受伤的逻辑。通过抽象类`Enemy`定义了基本行为,如生命值、伤害值和受伤反馈,同时利用`OnTriggerEnter2D`监听玩家触碰,触发玩家健康值减少。
摘要由CSDN通过智能技术生成

以下是各个小怪继承的父类【Enemy】脚本。

主要功能包含:

1.怪物自身受到伤害;

2.受伤闪烁红色+粒子特效;

3.玩家与怪物触碰受到伤害。

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

public abstract class Enemy : MonoBehaviour  //抽象类
{
    public int health;
    public int damage;

    public float flashTime;

    public GameObject BloodEffect;
    private SpriteRenderer sr;
    private Color originalColor;
    private PlayerHealth playerHealth;

    // Start is called before the first frame update
    public void Start()
    {
        playerHealth = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>();
        sr = GetComponent<SpriteRenderer>(); //获取原始图
        originalColor = sr.color;  //初始颜色赋值
    }

    // Update is called once per frame
    public void Update()
    {
        if (health <= 0)
        {
            Destroy(gameObject);
        }
        
    }

    public void TakeDamage(int damage)
    {
        Debug.Log("Takedamage");
        health -= damage;
        FlashColor(flashTime);
        //生成粒子特效,流血
        Instantiate(BloodEffect, transform.position, Quaternion.identity);
        GameController.camShake.Shake();
        if (health <= 0)
        {
            Destroy(gameObject);
        }
    }

    void FlashColor(float time)
    {
        sr.color = Color.red;
        //延迟时间
        Invoke("ResetColor", time); //还原颜色

    }

    //还原
    void ResetColor()
    {
        sr.color = originalColor;
    }

    void OnTriggerEnter2D(Collider2D other) 
    {
        //若检测到player并且为胶囊体碰撞框时
        if (other.gameObject.CompareTag("Player") && other.GetType().ToString() == "UnityEngine.CapsuleCollider2D")
        {
            if (playerHealth != null)
            {
                playerHealth.DamagePlayer(damage);                
            }

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值