当前位置: 首页 > article >正文

Unity类银河战士恶魔城学习总结(P117 Ice And Fire Item Effec 制作一把冰火属性的剑)

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

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

制作一把双重属性的剑,我取名为冰与火之歌

 IceAndFire_Effect.cs

  • 这个脚本的作用是在玩家第三次攻击时生成一个冰火技能预制体,预制体会根据玩家的朝向以设定的速度向前飞行。
  • 该技能的核心特性是结合了玩家的连击次数(第三次连击时触发)和物理效果(通过 Rigidbody2D 控制速度)。
  • 生成的技能物体在 10 秒后自动销毁,以保持场景的清洁。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "Ice and Fire effect", menuName = "Data/Item effect/Ice and Fire")]
public class IceAndFire_Effect : ItemEffect
{
    [SerializeField] private GameObject iceAndFirePrefab;//冰火技能预制体
    [SerializeField] private float xVelocity;//冰火技能的水平速度

    public override void ExcuteEffect(Transform _respawnPositon)
    {
        Player player = PlayerManager.instance.player;

        bool thirdAttack =player.GetComponent<Player>().primaryAttack.comboCounter == 2;//第三次攻击才能释放冰火技能

        if (thirdAttack)
        {

            GameObject newIceAndFire = Instantiate(iceAndFirePrefab, _respawnPositon.position, player.transform.rotation);

            newIceAndFire.GetComponent<Rigidbody2D>().velocity = new Vector2 (xVelocity *player.facingDir,0);//修改朝向

            Destroy(newIceAndFire, 10);
        }    
    }
}

IceAndFire_Controller.cs

简单的覆盖碰撞触发器

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

public class IceAndFire_Controller : ThunderStrike_Controller
{
    protected override void OnTriggerEnter2D(Collider2D collision)
    {
        base.OnTriggerEnter2D(collision);
    }
}

PlayerAnimationTriggers.cs

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);//检测区域内的敌人

        foreach (var hit in colliders)//遍历检测到的对象
        {
            if (hit.GetComponent<Enemy>() != null)
            {
                EnemyStats _target = hit.GetComponent<EnemyStats>();//判断是否是敌人

                if (_target != null) //对敌人造成伤害
                    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();
    }
}


http://www.kler.cn/a/390952.html

相关文章:

  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • 数据结构-集合
  • vue2或vue3的name属性有什么作用?
  • Systemd: disable和mask的区别
  • 信号量和线程池
  • 使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏
  • 练习题 - Django 4.x WWW 网址使用示例和配置方法
  • Git推送报错Authentication failed
  • 深入探讨钉钉与金蝶云星空的数据集成技术
  • 在linux上搭建一个nodejs服务_全流程
  • 如何将交叉编译配置在环境变量中
  • arcgis for js实现popupTemplate弹窗field名称和值转义
  • 【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
  • 【开源免费】基于SpringBoot+Vue.JS宠物咖啡馆平台(JAVA毕业设计)
  • uniapp的基本使用(easycom规范和条件编译)和uview组件的安装和使用
  • 天地图入门|标注|移动飞行|缩放,商用地图替换
  • 自动化新时代:机器取代工作,我们该如何重塑自我?
  • 企业级工位管理:Spring Boot解决方案
  • 自媒体素材10个4K分辨率Premiere胶片漏光划痕特效视频转场过渡模板
  • 【Python3】【力扣题】414. 第三大的数
  • 代码随想录算法训练营第二十天|39. 组合总和、40.组合总和II、131.分割回文串
  • [MySQL]隐式类型转换
  • 为何数据库推荐将IPv4地址存储为32位整数而非字符串?
  • Spring学习笔记(四)
  • Java基于SpringBoot+Vue框架的宠物寄养系统(V2.0),附源码,文档
  • 微软的新模拟器将为 Windows on Arm 带来更多游戏