Unity:简单的蓄力技能的逻辑实现

news/2024/5/18 15:39:16 标签: unity, 游戏程序

先随意创建一个游戏对象用于测试
随意
在这里插入图片描述
获取一下SpriteRenderer组件,实现不同的蓄力改变它的颜色。

private bool isDown;
private float time;
private SpriteRenderer spriteRenderer;
void Start()
{
	isDown = false;
	spriteRenderer = GetComponent<SpriteRenderer>();
}

Test1方法检测鼠标状态,键盘同理

void Update()
{
	Test1();
	Timer();
}

void Test1()
{
	if (Input.GetMouseButtonDown(0))
	{
	    isDown = true;
    	Debug.Log("按下鼠标左键");
    }
    else if (Input.GetMouseButtonUp(0))
    {
    Debug.Log("松开鼠标左键");
    isDown = false;
    }
}

计时的逻辑处理,我们要实现蓄力时间0.5—3秒时为重击,伤害加成为100%—250%,低于0.5秒则为轻击。

/// <summary>
/// 计时逻辑处理方法
/// </summary>
void Timer()
{
	if (isDown) //按下时开始计时
	{
		time += Time.deltaTime;
	}
	else if (!isDown && time > 0.5f)   //蓄力完成&蓄力0.5秒以上
 	{
		Debug.Log("本次蓄力时长:"+time);
		//0.5—3
		time = time > 3f ? time = 3 : time;  //限制有效蓄力为0.5—3秒
		Debug.Log("有效蓄力时长:"+time);
		//0%-100%
		float percentum = (time - 0.5f) / (3f - 0.5f) * 1f; //蓄力时长百分比 *1f可省略
		Debug.Log("蓄力时长百分比:" + percentum);
		//1—2.5
		float damage = (2.5f - 1f) * percentum + 1f;	//最终伤害加成
		Debug.Log("释放重击");
		Debug.Log("释放重击伤害加成:" + damage);
		spriteRenderer.color = new Color32(255, 0, 0, 255);	//重击时变为红色
		time = 0;
	}
	else if (!isDown && time > 0 && time <= 0.5) //蓄力小于0.5秒
	{
		Debug.Log("本次蓄力时长:" + time);
		Debug.Log("释放轻击");
		spriteRenderer.color = new Color32(255, 255, 0, 255); //轻击时变为黄色
		time = 0;
	}
}

运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:
求x-y之间a的值的百分比:
公式:(a-x)/(y-x)*100%

求x-y之间的百分比a的值:
公式:(y-x)*a+x


http://www.niftyadmin.cn/n/1303880.html

相关文章

Sqlserver获取日期不同格式的方法

Sqlserver获取日期不同格式的方法 CONVERT函数&#xff0c;第一个参数是数据类型&#xff0c;第二个参数是要转换的时间&#xff0c;第三个参数是代号&#xff0c;代表最终转换的格式 select CONVERT(varchar, getdate(), 120 ) 效果&#xff1a;2004-09-12 11:06:08select r…

Nginx代理mysql端口

Nginx代理mysql端口 1、安装1.9以上版本nginx并配置stream模块 cd /usr/local/wget http://nginx.org/download/nginx-1.9.9.tar.gz或直接复制链接去官网下载然后上传 解压压缩包 tar -zxvf nginx-1.9.9.tar.gz 重命名(非必须) mv nginx-1.9.9.tar.gz nginx安装需要的其他…

java ui界面布局_鸿蒙 HarmonyOSJava UI之DependentLayout布局示例

DependentLayout简介DependentLayout意为相对位置布局&#xff0c;与DirectionalLayout相比较有更多的排布方式&#xff0c;每个组件可以指定相对于其他同级组件的位置&#xff0c;也可以指定相对于父组件的位置。可以使用DependentLayout布局来实现更加复杂的UI界面&#xff0…

java分布式变量共享_详解Java分布式Session共享解决方案

分布式Session一致性&#xff1f;说白了就是服务器集群Session共享的问题Session的作用&#xff1f;Session 是客户端与服务器通讯会话跟踪技术&#xff0c;服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问服务端的时候&#xff0c;服务端会响应一个sessionId并…

java三大特性面试回答6_java三大特性之多态性和面试题分析

一、多态性的理解1.1 多态性的体现和理解1.1.1 多态的体现Java中的体现&#xff1a;对象的多态性&#xff1a;父类的引用指向子类的对象(或子类的对象赋给父类的引用)可以直接应用在抽象类和接口上。1.1.2 多态的作用作用&#xff1a; 提高了代码的通用性&#xff0c;常称作接口…

linux源码编译安装mysql_linux 源码编译安装MySQL

源码编译安装mysql一 准备工作 添加一块硬盘 用该硬盘创建逻辑卷1检测新此盘df -hT2创建物理卷pvcreate /dev/sd。。。3创建卷组vgcreate 卷组名 /dev/sd。。。4创建逻辑卷lvcreate -L 几G -n 逻辑卷名 卷组名5查看一下创建的逻辑卷lvscan6格式化逻辑卷mkfs.xfs /dev/卷组名/逻…

在java三个数由小到大输出_【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出...

能解决题目的代码并不是一次就可以写好的我们需要根据我们的思路写出后通过debug模式找到不足再进行更改多次测试后才可得到能解决题目的代码&#xff01;通过学习&#xff0c;练习【Java基础经典练习题】&#xff0c;让我们一起来培养这种解决问题思路。一、视频讲解二、思路分…

java base64编码压缩_在线等(急)Base64(带压缩)出问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼发表于 2018-09-06 15:34:20 楼主用base64进行编码。有一个206kb的jpg文件第一次调用方法可以通过&#xff0c;第二次是一个80kb的jpg文件反而不能通过了。我将两次的图片通过反编码成图片反而80kb的图片更大。只有206kb的图片解码…