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

学习游戏制作记录(各种独特物品效果)8.18

1.实现雷击物品效果

自行创建一个雷击的预制体,需要有碰撞器和动画控制器

创建ThunderStrike_Effect脚本:

[CreateAssetMenu(fileName = "ThunderStrikeEffect", menuName = "Data/Effect/ThunderStrike")]
public class ThunderStrike_Effect : ItemEffect//继承
{
[SerializeField] private GameObject thunderStrikePrefab;//预制体
public override void ExcuteEffect(Transform _enemyPositon)
{
GameObject thunderStrike =Instantiate(thunderStrikePrefab, _enemyPositon.position,Quaternion.identity);在敌人位置生成预制体


    }
}

创建ThunderStrike_Control脚本并挂载在雷击预制体上:

    protected void OnTriggerEnter2D(Collider2D collision)//触发器
{
PlayerStats playerStats = PlayerManage.instance.player.GetComponent<PlayerStats>();

        if(collision.GetComponent<EnemyStats>() != null )//检测到敌人则对敌人造成魔法伤害
{
EnemyStats enemyStats = collision.GetComponent<EnemyStats>();

            playerStats.DoMagicDamage(enemyStats);

            Destroy(gameObject, 1f);
}
}

PlayerAnimationTriggers脚本:

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

                if (itemData_Equipment!=null)//确保玩家装装备时才会调用效果函数
{
itemData_Equipment.Effect(hit.transform);//雷击
}

2.实现冰与火的物品效果

当玩家攻击到第三下时会发出一个飞弹

自行创建冰与火飞弹攻击的预制件,挂载刚体,碰撞器,动画控制器等组件

创建IceAndFireEffect脚本:

[CreateAssetMenu(fileName = "Ice And Fire Effect", menuName = "Data/Effect/IceAndFire")]
public class IceAndFireEffect : ItemEffect
{
[SerializeField] GameObject iceAndfirePrefab;//预制体
[SerializeField] private float xVelocity;//飞行速度

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

bool thirdAttack = player.primaryAttackState.comboCount == 2;//检查是否攻击到第三下

        if(thirdAttack)
{
GameObject iceAndFire = Instantiate(iceAndfirePrefab, _respawnPositon.position, player.transform.rotation);//生成

            iceAndFire.GetComponent<Rigidbody2D>().velocity = new Vector2(xVelocity * player.facingDir, 0);//设置速度

            Destroy(iceAndFire,10);//10秒后销毁
}

    }
}

创建IceAndFIre_Control挂载在预制体上:


public class IceAndFIre_Control : ThunderStrike_Control//造成伤害
{
protected override void OnTriggerEnter2D(Collider2D collision)
{
base.OnTriggerEnter2D(collision);
}
}

3.实现雷击饰品效果

当装备该饰品时,水晶和剑攻击将附带雷击效果

Crystal_Skill_Control脚本:

    public void AnimationExplodeEvent()//水晶造成伤害的函数
{
Collider2D[] collider2Ds = Physics2D.OverlapCircleAll(transform.position,cd.radius);

        foreach (var hit in collider2Ds)
{
if (hit.GetComponent<Enemy>() != null)
{
player.state.DoMagicDamage(hit.GetComponent<CharactorState>());

                ItemData_Equipment itemAmulet = Inventory.instance.GetEquipment(EquipmentType.Amulet);//检测是否装备饰品

               if(itemAmulet != null)
{
itemAmulet.Effect(hit.transform);//调用效果
}
}
}
}

Sword_Skill_Control脚本:

    private void SwordSkillDamage(Enemy enemy)//剑造成伤害的函数
{
player.state.DoDamage(enemy.GetComponent<CharactorState>());
enemy.StartCoroutine("FreezeTimeFor", freezeTimeDuration);

        ItemData_Equipment itemAmulet = Inventory.instance.GetEquipment(EquipmentType.Amulet);//同理

        if (itemAmulet != null)
{
itemAmulet.Effect(enemy.transform);
}
}

http://www.xdnf.cn/news/18138.html

相关文章:

  • 机器学习-决策树:从原理到实战的机器学习入门指南
  • AI大模型实战:用自然语言处理技术高效处理日常琐事
  • 嵌入式设备Lwip协议栈实现功能
  • 【软考架构】第4章 密钥管理技术和访问控制及数字签名技术
  • 【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性
  • 【大模型】RAG
  • 8.19 note
  • 云原生俱乐部-mysql知识点归纳(1)
  • cesium中实时获取鼠标精确坐标和高度
  • Vue深入组件:组件事件详解1
  • Laravel中如何使用php-casbin
  • OSCP - Proving Grounds - Vanity
  • 云计算核心技术之容器技术
  • SAP 数据脱敏工具:SNP TDO如何满足新颁敏感信息政策要求
  • 【C语言篇】操作符详解
  • 电子电气架构 --- 软件开发数字化转型
  • Python函数:装饰器
  • 三高架构杂谈
  • 软件定义汽车---创新与差异化之路
  • Jenkins全链路教程——Jenkins调用Maven构建项目
  • Kafka文件存储机制
  • 深入浅出决策树
  • (二十)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(下)——实战篇
  • Google 的 Opal:重新定义自动化的 AI 平台
  • Git版本控制与协作
  • 4.9 配置 开发服务器 和 请求代理
  • 汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
  • 使用Idea安装JDK
  • 从零开始,系统学习AI与机器学习:一份真诚的学习路线图
  • 容器化 Android 开发效率:cpolar 内网穿透服务优化远程协作流程