『功能项目』技能释放【08】

2024-08-28 13:12
文章标签 项目 功能 08 技能 释放

本文主要是介绍『功能项目』技能释放【08】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们打开上一篇07摄像机跟随角色的项目,

本章要做的事情是主角按F按键释放技能,按E键切换技能类型的功能。

首先创建一个空文件夹Resources

创建一个球体Shpere

修改球体缩放尺寸

创建一个材质Material

将材质重命名为Yellow,色板调至为黄色

将Yellow材质球拖拽至球体Shpere对象身上

设置一个新输入系统

拖拽一个攻击动画

连线

创建一个参数

设直线

创建脚本代码:MagicBall.cs

脚本绑定在Resources文件下的Sphere预制体

using UnityEngine;
public class MagicBall : MonoBehaviour{
    float speed = 10.0f;
    public float lifeTime = 2;
    float startTime;
    void Start(){
        transform.position = new Vector3(transform.position.x, 
            transform.position.y + 1f, transform.position.z);
        startTime = Time.time;
    }
    void Update(){
        transform.position += speed * transform.forward * Time.deltaTime;
        if (startTime + lifeTime < Time.time)
            Destroy(gameObject);
    }
    void OnTriggerEnter(Collider other){
        //稍后补充碰撞逻辑
    }
}
 

创建脚本:SkillRelease.cs

using UnityEngine;
using System.Collections;
public class SkillRelease : MonoBehaviour{
    GameObject prefabBall;
    float straightSkillCD = 0.2f;
    float sectorSkillCD = 0.5f;
    float lastShootTime;
    int curSkill { get; set; }
    void Awake(){
        prefabBall = Resources.Load<GameObject>("Sphere");
    }
    public void Release(bool keyDown, bool keyPressed){
        switch (curSkill){
            case 0:
                if (keyDown)
                    StartCoroutine(DelayedPistolFire(0.5f));
                break;
            case 1:
                if (keyDown)
                    StartCoroutine(DelayedShotgunFire(0.5f));
                break;
        }
    }
    public int Change(){
        curSkill += 1;
        if (curSkill == 3)
            curSkill = 0;
        return curSkill;
    }
    void StraightSkill(){
        if (lastShootTime + straightSkillCD > Time.time)
            return;
        lastShootTime = Time.time;
        GameObject sphere = Instantiate(prefabBall, null);
        sphere.transform.position = transform.position + transform.forward * 2.0f;
        sphere.transform.forward = transform.forward;
    }
    void SectorSkill(){
        if (lastShootTime + sectorSkillCD > Time.time)
            return;
        lastShootTime = Time.time;
        for (int i = -2; i <= 2; i++){
            GameObject sphere = Instantiate(prefabBall, null);
            Vector3 dir = Quaternion.Euler(0, i * 10, 0) * transform.forward;
            sphere.transform.position = transform.position + dir * 2.0f;
            sphere.transform.forward = dir;
            MagicBall ball = sphere.GetComponent<MagicBall>();
            ball.lifeTime = 1f;
        }
    }
    IEnumerator DelayedPistolFire(float delay){
        yield return new WaitForSeconds(delay);
        StraightSkill();
    }
    IEnumerator DelayedShotgunFire(float delay){
        yield return new WaitForSeconds(delay);
        SectorSkill();
    }
}
将代码绑定在主角常态身上

增加PlayerRayClickNavigation.cs脚本代码

运行项目即可实现按键盘F按键实现释放魔法弹效果,按键盘E键切换技能释放类型,再次按F键变为群体技能。

本篇只实现了摄像机跟随主角功能,接下来还需做以下内容:

1.怪物的生成

2.怪物UI信息(笼)

3.3D模型投射UI(UGUI)界面

4.坐骑在主角身旁召唤召回功能

5.异步传送功能

6.目标点巡航功能

7.动画事件

以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。

具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)icon-default.png?t=N7T8https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0

这篇关于『功能项目』技能释放【08】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114858

相关文章

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文