首页 > 其他分享 >Unity类银河战士恶魔城学习总结(P116 Thunder Strike Item Effec 制作一把发出闪电的剑)

Unity类银河战士恶魔城学习总结(P116 Thunder Strike Item Effec 制作一把发出闪电的剑)

时间:2024-11-09 19:46:47浏览次数:3  
标签:P116 Thunder void private 恶魔城 player 雷电 GetComponent using

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/

本节实现了一把带雷电攻击的剑,我取名为雷电一心

TunderStrike_Effect.cs

实现逻辑

  • 通过继承ItemEffect,实现一个在敌人位置生成雷电打击效果的逻辑。
  • 生成的雷电效果是一个预制件,使用Unity的Instantiate方法动态创建,并在短时间后销毁,模拟雷电打击的瞬间效果。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//2024年11月8日
[CreateAssetMenu(fileName = "Thunder strike effect", menuName = "Data/Item effect/Thunder strike")]

public class TunderStrike_Effect : ItemEffect
{
    [SerializeField] private GameObject thunderStrikePrefab;//定义预制件

    public override void ExcuteEffect(Transform _enemyPositon)
    {
        GameObject newThunderStrike = Instantiate(thunderStrikePrefab,_enemyPositon.position,Quaternion.identity);

        Destroy(newThunderStrike, .7f);//防止一直在不消失

    }
}

ExcuteEffect()函数里面加了变量,记得改相关引用函数里面的变量

ThunderStrike_Controller.cs

实现逻辑

  • 检测雷电打击效果与敌人的碰撞,并确保只有碰到敌人时才执行伤害逻辑。
  • 通过访问玩家的状态,调用玩家的DoMagicDamage()方法来对敌人造成魔法伤害。
  • 该脚本是雷电打击效果的关键部分,通过碰撞机制实现对敌人的伤害处理。
using UnityEngine;

public class ThunderStrike_Controller : MonoBehaviour
{

    protected virtual void OnTriggerEnter2D(Collider2D collision)//碰撞处理
    {
        if (collision.GetComponent<Enemy>() != null)
        {
            PlayerStats playerStats = PlayerManager.instance.player.GetComponent<PlayerStats>();

            EnemyStats ememyTarget = collision.GetComponent<EnemyStats>();//获取碰撞到敌人的数据

            playerStats.DoMagicDamage(ememyTarget);//造成魔法伤害
        }
    }
}

PlayerAnimationTriggers.cs

主要更改了for循环下面的if函数

增加武器效果:武器可能会对命中的敌人施加额外的效果(比如状态异常或附加伤害),从而增加攻击的多样性。

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

public class PlayerAnimationTriggers : MonoBehaviour
{
    private Player player => GetComponentInParent<Player>();

    private void AnimationTrigger()
    {
        player.AnimationTrigger();
    }

    private void AttackTrigger()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(player.attackCheck.position, player.attackCheckRadius);//这行代码在 Unity 中用于检测一个圆形区域内的所有碰撞体,并返回它们的数组。

        foreach(var hit in colliders)//foreach循环是一个迭代器,它可以遍历数组、集合、列表、字典等数据结构。攻击到敌人后,调用伤害函数
        {
            if (hit.GetComponent<Enemy>() != null)
            {
                EnemyStats _target = hit.GetComponent<EnemyStats>();

                player.stats.DoDamage(_target);


                ItemData_Equipment weaponData = Inventory.instance.GetEquipment(EquipmentType.Weapon);

                if (weaponData != null)
                    weaponData.Effect(_target.transform);

            }
        }
    }



    private void ThrowSword()
    {
        SkillManager.instance.sword.CreateSword();
    }
}

标签:P116,Thunder,void,private,恶魔城,player,雷电,GetComponent,using
From: https://blog.csdn.net/suzh1qian/article/details/143627602

相关文章

  • 洛谷题单指南-二叉堆与树状数组-P1168 中位数
    原题链接:https://www.luogu.com.cn/problem/P1168题意解读:中位数就是位于中间的数,前1个数的中位数是第1个,前3个数的中位数是第2个,前5个数的中位数的第3个...以此类推。所以,此题本质上就是动态维护一组数,每1/3/5...等奇数个取第k小的数,取一次后k++。解题思路:要动态维护数据,且每......
  • 洛谷P1162 填涂颜色题解
    老规矩上题目:题目描述由数字 00 组成的方阵中,有一任意形状的由数字 11 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 22。例如:6×66×6 的方阵(n=6n=6),涂色前和涂色后的方阵如下:如果从某个 00 出发,只向上下左右 44 个方向移动且仅经过其他 00 的情况下,无法......
  • 【洛谷】P1168 中位数 的题解
    【洛谷】P1168中位数的题解题目传送门题解不懂就问,这是什么标签啊,《线段树》《二分》《堆》《树状数组》qaq谔谔,教练讲的这是一题线段树,看半天看不出来,也不会做,只好去看题解。其他的题解讲什么主席树,平衡树,分块,结果看完第一篇人都傻了。什么东西嘛qaq(恼vector直接一......
  • BFS 颜色填涂———洛谷p1162
    填涂颜色题目描述由数字\(0\)组成的方阵中,有一任意形状的由数字\(1\)构成的闭合圈。现要求把闭合圈内的所有空间都填写成\(2\)。例如:\(6\times6\)的方阵(\(n=6\)),涂色前和涂色后的方阵如下:如果从某个\(0\)出发,只向上下左右\(4\)个方向移动且仅经过其他\(0\)的情况下......
  • P1168 中位数(对顶堆)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • 洛谷刷题之P1168
    中位数题目描述给定一个长度为NNN的非负整数序列AAA,对于前奇数......
  • 《Programming from the Ground Up》阅读笔记:p103-p116
    《ProgrammingfromtheGroundUp》学习第7天,p103-p116总结,总计14页。一、技术总结1.读写文件(1)linux.slinux.s:#filename:linux.s#systemcallnumbers(按数字大小排列,方便查看).equSYS_READ,0.equSYS_WRITE,1.equSYS_OPEN,2.equSYS_CLOSE,3.equSYS_EXI......
  • 打卡信奥刷题(487)用Scratch图形化工具信奥P1161[普及组/提高] 开灯
    开灯题目描述在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,......
  • 洛谷 P1162 填涂颜色 广度优先搜索
    记录学习填涂颜色题目描述由数字000组成的方阵中,有一任意形状的由数字11......
  • 洛谷Day1--P1102 A-B数对 P1163 银行贷款
    目录一、引言二、题目及题解题目一:P1102A-B数对题目链接题解:哈希 题目二:P1163银行贷款题目链接题解:二分 三、小结一、引言今天是周日,代码随想录训练营的打卡休息一天。想着刷一点题巩固一下之前的所学,就做了两道洛谷的题,一道用的哈希(也可以二分,个人感觉麻烦......