『功能项目』技能释放【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

相关文章

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red