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

Unity开发——好用的数值概率公式

1、血量、伤害两个因素作用,击杀目标

正常状态下:hp -= attackValue;

特殊状态下:attackValue *=2;        //伤害翻倍

如飞机/坦克大战中,击杀对方;受到伤害时,装备道具磨损失效;

public int hp=10;
private bool isDebuff;public void AttackEnemy(int attackValue)
{if (isDebuff) attackValue *= 2;hp -= attackValue;if (hp <= 0) isDead = true;
}

--*************************************************************************************************--

2、血量(不可变)、伤害、以及随机成功概率三个因素作用,概率性击杀目标

伤害数值设计思路:

targetRate是随机出来的此次目标概率;hp越大越难,attackValue越大越容易;

若各因素叠加后的概率大于目标概率,则能击杀成功。

随机数:targetRate = Mathf.Floor(Random.Range(0,100));

公式1:if (targetRate <=( 50-(hp-attackValue)  )/2 ){isOk = true;}    50表示基础概率;

公式2:if (targetRate <= attackValue*3 - hp/10){isOk = true;}

如捕鱼达人中每次成功攻击鱼时捕获成功的概率;

private bool isOk = false;
public int hp =10;public void CatchItem(int attackValue){int targetRate = Mathf.Floor(Random.Range(0,100));//随机出此次目标概率if (targetRate<=(50-(hp-attackValue))/2){isOK = true;}if (targetRate<= attackValue*3-hp/10){isOK = true;}
}

--**********************************************************************************************--

3、物体的位置,抖动系数确定震动随机范围,实现自然的随机震动

震动大小:andom.Range(0f, 振动系数) - 振动系数* 0.5f

震幅衰减:震动系数= 震动系数 / 1.05f;

停止震动:if ( 震动系数<0.05f )  { 震动系数=0; }

如:被攻击时,画面/玩家晃动。

using UnityEngine;/// <summary>
/// 被攻击时,玩家产生的震动方法
/// </summary>
public class Shake : MonoBehaviour
{public bool isShake= false;                     //是否允许震动private float shakeRate = 5;                    //震动系数void Update(){if (isShake){//x方向移动transform.position = new Vector3((Random.Range(0f, shakeRate)) - shakeRate * 0.5f, transform.position.y, transform.position.z);//z方向移动transform.position = new Vector3(transform.position.x, transform.position.y, (Random.Range(0f, shakeRate)) - shakeRate * 0.5f);shakeRate = shakeRate / 1.05f;        //减小振幅if (shakeRate < 0.05f)                //振幅过小时,停止被撞击效果{shakeRate = 0;                    //振幅系数置0isShake= false;                   //禁止震动}}else shakeRate= 5;                        //不需要震动时,把震动系数还原}
}

数值计算参考来源:siki学院课程

http://www.lryc.cn/news/351726.html

相关文章:

  • 微信小程序的自定义组件
  • 【算法刷题day57】Leetcode:739. 每日温度、496.下一个更大元素 I
  • 【EXCEL_VBA_实战】两组数据比对是否一致(字符串数组)
  • 寻找峰值 ---- 二分查找
  • C语言--输入一个整数代表秒数,将这个数转化为对应的小时数、分钟数、和秒数
  • 二分搜索技术
  • docker容器安装nexus3以及nexus3备份迁移仓库数据
  • 无线领夹麦克风哪个品牌音质最好,揭秘无线领夹麦哪个牌子好用
  • pcd点云江湖之处处碰壁:点云文件pcd加载02
  • 【SQL国际标准】ISO/IEC 9075:2023 系列SQL的国际标准详情
  • 15.1数组练习题
  • Flink 任务调度策略:Lazy from Sources 深入解析
  • 【NumPy】关于numpy.reshape()函数,看这一篇文章就够了
  • 探寻最强性能云电脑:ToDesk云电脑、无影云、网易云游戏、易腾云横测大比拼
  • 回溯法——(2)n皇后问题(C语言讲解)(LeetCode51 N皇后思想)(4皇后棋盘画图举例)(附代码)
  • 数据库系统概论(第5版)复习笔记
  • 数仓领域,Serving 是什么概念?
  • Python筑基之旅-MySQL数据库(三)
  • (全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令
  • 软考 软件设计师 场景分析题 速成篇
  • [学习笔记](Python3)防止SQL注入、XSS攻击和文件上传漏洞
  • 西门子CPU与汇川伺服通信与控制
  • 移动硬盘无法读取怎么修复?简单八步,轻松搞定!
  • c4d云渲染是工程文件会暴露吗?
  • C语言/数据结构——每日一题(有效的括号)
  • STM32使用旋转编码开关
  • OneMO同行 心级服务:中移物联OneMO模组助力客户终端寒冷环境下的稳定运行
  • 爬虫视图展示之 Power BI
  • 微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望
  • 抖音视频怎么去水印保存部分源码|短视频爬虫提取收集下载工具