【unity小技巧】最简单的FPS游戏准心跳动动画控制

最终效果

在这里插入图片描述

文章目录

  • 最终效果
  • 前言
  • 绘制简单的准心UI
  • 实现不同状态准心大小变化
  • 射击准心跳动的效果
  • 完结

前言

游戏准心跳动在FPS也是比较常用的功能,可以增强游戏反馈打击感,丰富游戏内容,实现准心跳动的方式五花八门,我不知道别人是怎么做的,但是我自认为我这种应该是最简单的,继续看下去你就知道了。

绘制简单的准心UI

在这里插入图片描述
注意不同位置的准心都进行了边缘定位,这样可以方便的控制父类尺寸大小变化来控制整个准心的变化
在这里插入图片描述

实现不同状态准心大小变化

新增CrossHair代码,挂载在准心父类上

MovementScript是控制角色移动的代码,具体可以查看之前的文章:
unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡,复制粘贴即用

public class CrossHair : MonoBehaviour
{
    public MovementScript movementScript;
    [Header("UI")]
    
    public float smoothness = 10f;//变变化平滑值
    private RectTransform crossQuarter; //准心UI
    Vector2 crossQuarterSize;//保存准心初始尺寸

    [Header("判断")]
    bool isMove;//是否在移动
    bool isWalking;//是否正在行走
    bool isRuning; //是否正在奔跑
    bool isCrouching; //是否正在下蹲

    private void Start()
    {
        crossQuarter = GetComponent<RectTransform>();
        
        crossQuarterSize = crossQuarter.sizeDelta;
    }

    void Update()
    {
        isMove = Vector3.SqrMagnitude(new Vector3(movementScript.moveDirection.x, 0, movementScript.moveDirection.z)) > 0;
        isRuning = movementScript.isRun && isMove;
        isCrouching = movementScript.isCrouching;
        isWalking = !isRuning && !isCrouching && isMove;

        if (isWalking)
        {
            //行走时的准心开合度
            ExpandCrossUpdate(1.5f);
        }
        else if (isRuning)
        {
            //奔跑时候的准心开合度(2倍)
            ExpandCrossUpdate(2f);
        }
        else if (isCrouching)
        {
            //下蹲时候的准心开合度(-2倍)
            ExpandCrossUpdate(0.6f);
        }
        else
        {
            //站立时,不调整准心开合度
            ExpandCrossUpdate(1f);
        }
    }

    //根据指定大小,来增加或减小准心的开合度
    public void ExpandCrossUpdate(float expandDegree)
    {
        Vector2 targetSize = crossQuarterSize * expandDegree;
        crossQuarter.sizeDelta = Vector2.Lerp(crossQuarter.sizeDelta, targetSize, Time.deltaTime * smoothness);
    }
}

效果

在这里插入图片描述

射击准心跳动的效果

修改代码

if (Input.GetKey(KeyCode.Mouse0))
{
    Invoke("Shoot", 0.1f);//模拟射击间隔0.1s
}

void Shoot(){
    ExpandCrossUpdate(2.5f);
}

效果
在这里插入图片描述
好了,就是这么简单!

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252518.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis Streams 实现消息队列

简单介绍 Redis中有三种消息队列模式&#xff1a; 可以看出&#xff0c;作为Redis 5.0 引入的专门为消息队列设计的数据类型&#xff0c;Stream 功能更加健全&#xff0c;更适合做消息队列分发。 Stream 可以包含 0个 到 n个元素的有序队列&#xff0c;并根据ID的大小进行排序…

【CMU 15-445】Lecture 10: Sorting Aggregations Algorithms 学习笔记

Sorting & Aggregations Algorithms SortingTop-N Heap SortExternal Merge Sort2-WAY External Merge SortK-WAY External Merge SortDouble Buffering Optimization AggregationsSortingHashing 本节课主要介绍的是数据库系统中的排序算法以及聚合算法 Sorting 排序算法…

数据结构期末考题之001

算法复杂度就是n&#xff08;0&#xff09;

JdbcTemplate

环境搭建 依赖 <!-- Oracle11g 连接驱动依赖。这里是个坑&#xff0c;官方提供的不能用 --><dependency><groupId>cn.easyproject</groupId><artifactId>ojdbc6</artifactId><version>12.1.0.2.0</version></dependency&g…

20231217在Canonical 官网下载ubuntu-20.04.6以及通过rufus-4.3p写入U盘作为安装盘

20231217在Canonical 官网下载ubuntu-20.04.6以及通过rufus-4.3p写入U盘作为安装盘 2023/12/17 11:45 百度搜索&#xff1a;https://ubuntu.com/ https://ubuntu.com/engage/migrating-from-rhel-centos-to-ubuntu-public-cloud?utm_sourcetakeover http://releases.ubuntu.co…

从关键新闻和最新技术看AI行业发展(2023.12.4-12.17第十二期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rock…

软件设计规约和评审

软件设计规约 概要设计规约&#xff1a;这是面向软件开发者的文档&#xff0c;主要作为软件项目管理人员、系统分析人员与设计人员之间交流的媒介。它指明了软件的组织结构&#xff0c;主要内容包括&#xff1a; 系统环境&#xff1a;硬件、软件接口与人机界面&#xff1b;外部…

半导体设备之外延炉简述

半导体设备对整个半导体行业起着重要的支撑作用。因半导体制造工艺复杂&#xff0c;各个环节需要的设备也不同&#xff0c;从流程工序分类来看&#xff0c;半导体设备主要可分为晶圆制造设备&#xff08;前道工序&#xff09;、封装测试设备&#xff08;后道工序&#xff09;等…

自动驾驶学习笔记(二十)——Planning算法

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 参考线平滑 双层状态机 EM Planner …

724. 寻找数组的中心下标

代码&#xff1a; class Solution {public int pivotIndex(int[] nums) {int last0; //放前一个下标的左右差值int now0; //放当前下标的左右差值// 0 位于边界&#xff0c;先算出 0 下标左右的差值for(int i1;i<nums.length;i){lastnums[i];}//判断是否 0 下标就已…

大模型自定义算子优化方案学习笔记:CUDA算子定义、算子编译、正反向梯度实现

01算子优化的意义 随着大模型应用的普及以及算力紧缺&#xff0c;下一步对于计算性能的追求一定是技术的核心方向。因为目前大模型的计算逻辑是由一个个独立的算子或者说OP正反向求导实现的&#xff0c;底层往往调用的是GPU提供的CUDA的驱动程序。如果不能对于整个计算过程学习…

Ubuntu 常用命令之 cp 命令用法介绍

cp命令在Ubuntu系统中用于复制文件或目录。它的基本格式是cp [选项] 源文件或目录 目标文件或目录。 以下是一些常用的cp命令选项 -i&#xff1a;在覆盖目标文件之前将给出提示。-r或-R&#xff1a;递归复制&#xff0c;用于目录的复制操作。-v&#xff1a;详细模式&#xff…

地平线前端实习一面复盘(加深对var的理解+展开运算符+平拍数组)

目录 前言一&#xff0c;var的作用二&#xff0c;展开运算符三&#xff0c;平拍数组总结 前言 地平线的面试&#xff0c;有提示&#xff0c;很专业&#xff0c;体验很好。 可惜后面未收到消息&#xff0c;但还是要做复盘。收获还是很大的。 一&#xff0c;var的作用 且看下…

MySQL中EXPLAIN执行计划的分析

一. 执行计划能告诉我们什么&#xff1f; SQL如何使用索引联接查询的执行顺序查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行&#xff0c;每一行代表对一个数据库对象的操作 1. ID列 ID列中的如果数据为一组数字&#xff0c;表示执行SELECT语句的顺…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT&#xff08;端口映射&am…

自动驾驶技术:驶向未来的智能之路

导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新&#xff0c;旨在实现汽车在不需要人…

论文降重系统同义词替换功能的改进方向 快码论文

大家好&#xff0c;今天来聊聊论文降重系统同义词替换功能的改进方向&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 标题&#xff1a;论文降重系统同义词替换功能的改进方…

java21特性学习

jdk21下载地址 JDK21文件 JDK21是javaSE平台最新的长期支持版本。 Java SE Java Archive | Oracle JDK21版本说明 JDK 21 Release Notes, Important Changes, and Information JavaSE 版本字符串格式 Version-String Format JavaSE平台采用了基于时间的发布模型,JDK每六个…

虚拟化之安全虚拟化

虚拟化首次引入是在Armv7-A架构中。那时&#xff0c;Hyp模式&#xff08;在AArch32中相当于EL2&#xff09;仅在非安全状态下可用。当Armv8.4-A引入时&#xff0c;添加了对安全状态下EL2的支持作为一个可选特性。 当处理器支持安全EL2时&#xff0c;需要使用SCR_EL3.EEL2位从E…

HarmonyOS:使用MindSpore Lite引擎进行模型推理

场景介绍 MindSpore Lite 是一款 AI 引擎&#xff0c;它提供了面向不同硬件设备 AI 模型推理的功能&#xff0c;目前已经在图像分类、目标识别、人脸识别、文字识别等应用中广泛使用。 本文介绍使用 MindSpore Lite 推理引擎进行模型推理的通用开发流程。 基本概念 在进行开…