位置: 编程技术 - 正文

添加随机的游戏元素(随机游戏插件怎么使用)

编辑:rootadmin

推荐整理分享添加随机的游戏元素(随机游戏插件怎么使用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:随机生成的游戏,随机游戏插件使用教程,随机游戏插件使用教程,随机游戏怎么用,随机游戏怎么用,添加随机的游戏叫什么,添加随机的游戏有哪些,添加随机的游戏软件,内容如对您有帮助,希望把文章链接给更多的朋友!

文档路径:Unity Manual / Unity Overview / Creating Gameplay / Adding Random Gameplay Elements

添加随机的游戏元素

在许多游戏里,随机地选择物品或者数&#;是很重要的。本节展示了你该如何通过 Unity 内置的随机函数来实现一些常见的游戏机制。

从一个数组中随机地选出一个物品

随机地选择一个数组元素,可以归结为随机地选择一个范围从0到数组最大下标(这个&#;等于数组的长度减去1)的整数。这项工作可以很轻松地借助内置的 Random.Range 函数来完成:

请注意,Random.Range 返回一个取&#;范围包含第一个参数但不包含第二个参数的&#;。因此此处使用 myArray.Length 可以给出正确的结果。以不同的几率选择物品

有时候,你需要随机地选择物品,且其中某些物品被选中的可能性相比另一些物品更大一些。举例来说,某个NPC可能以如下的多种不同方式与遇到的玩家进行交互:

%的几率打招呼%的几率逃跑%的几率立即发动攻击5%的几率赠送金币作为&#;物

你可以将这些不同的结果可视化为一个纸带,这个纸带被分割为各个切片,每个切片占据了纸带总体长度的一部分。所占据的部分等于该结果被选中的几率。如此一来,做选择就等价于选择带子上的一个随机位置点(就像扔飞镖那样),然后看这个点落在哪一部分。

添加随机的游戏元素(随机游戏插件怎么使用)

在脚本中,这个纸带实际上是一个浮点数数组,这个数组依次包含了各个物品的不同选中概率。这个随机点是通过将 Random.value 乘以数组中所有浮点数的和得到(数组中的浮点数之和不必非得是1;关键在于不同&#;之间的相对大小)。为了找到随机点落在哪个数组元素中,我们首先检查该&#;(Random.value 乘以浮点数之和)是不是小于数组中的第一个元素。如果是的话,那么第一个元素就是被选中的幸运儿。否则,将该&#;减去第一个元素的&#;,然后比较更新后的&#;与第二个元素的大小。重复这个过程,直到找到正确的元素。这件事用代码描述看起来如下:

请注意,末尾的 return 语句是不可缺少的,因为 Random.value 可能返回 1 作为结果。如果是这种情况,那么搜索将会找不到随机位置点的落点位置。假如将这行

改为那么虽然能免去末尾的 return 语句,但是却会允许偶尔选中一个概率被设置为零的物品。打乱一个列表

一个常见的游戏机制就是从已知的一堆物品里以乱序取出它们。例如,一整副扑克牌通常会被打乱,这样抽牌的顺序就无法被预测。你可以通过访问每一个元素并与其他随机下标的元素进行交换的方式来打乱数组中的元素。示例代码如下:

不重复地从一堆物品中取出其子集

一个常见的任务就是从一堆物品中不重复地、随机地取出一些物品,每个物品最多被选中一次。例如,你可能想在随机的重生点生成一些NPC,但是每个重生点仅一个NPC。这可以通过顺序地在物品上进行重复地做随机决定该物品是否要加入到被选中集合中来实现。对于每个被访问的物品,该物品被选中的概率等于剩余需要选中物品数量除以剩余候选物品数量。

举个例子,假设有十个重生点可供选择,而只需挑选其中的五个。那么第一个物品被选中的概率是 5/ 或者说是 0.5. 如果它被选中了,那么第二个物品被选中的概率就是 4/9 或者说是 0.(还需要4个物品,剩余9个可供选择).否则第二个物品被选中的概率是 5/9 或者说是 0.(还需要5个物品,剩余9个可供选择).重复这个操作直到被选中集合含有5个物品。你可以用如下的代码来完成这项工作:

请注意,虽然选择是随机的,但是被选中集合中的物品依然是原集合中的顺序。如果这些物品是按顺序地每次逐个使用的话,那么这些物品的顺序有可能导致它们被部分地预测。因此,在使用前可能还需要打乱这个被选中集合数组。空间中的随机点

立方体内的随机点可以通过将 Vector3 的每个分量分别设置为 Random.value 的返回&#;来达成,代码如下:

这将给出一个位于单位长度的立方体内的坐标点。通过将这个向量的X,Y,Z分量分别乘以所需的边长,可以很容易地控制这个方块的长宽高。如果其中一个轴被设置为零,那么这个点将会总是落在某个平面上。例如,选择位于“地面”的一个随机坐标点,经常是随机地设置X与Z分量而保持Y分量为零的问题。

如果这个空间体是一个球体(例如,当你想要一个距离坐标原点小于给定半径的随机点),你可以使用 Random.insideUnitSphere 乘上所需的半径。代码如下:

请注意,如果你设置上面的球内随机坐标点的某个分量为零,那么你将不能正确地得到平面圆内的随机点。虽然这个点确实是随机的,并且落在正确的半径内,但是落点概率严重地偏向于圆的边缘,因此得到的点将会分布得很不均衡。你应该使用 Random.insideUnitCircle 来完成这项任务。代码如下:

Building Unity3D Plugins for Android BuildingPluginsforAndroidThispagedescribesNativeCodePluginsforAndroid.BuildingaPluginforAndroidTobuildapluginforAndroid,youshouldfirstobtaintheAndroidNDKandfamiliarizeyourselfwiththestepsinvolvedinbui

【猫猫的Unity Shader之旅】之双面材质和多Pass渲染 默认情况下,我们编写的Shader都只对模型的正面进行渲染,因为大多数模型都是封闭的,我们看不到反面。在实际的开发过程中,也经常会遇到需要正

【边玩边学Unity3d】实现可编辑网格 转载:

标签: 随机游戏插件怎么使用

本文链接地址:https://www.jiuchutong.com/biancheng/372799.html 转载请保留说明!

上一篇:Unity中用触摸控制物体旋转和放大(unity怎么做触屏按键)

下一篇:Building Unity3D Plugins for Android

  • 员工扣了个税但没交给税务局
  • 软件产品即征即退条件
  • 车辆租赁费发票备注栏怎么写
  • 公司购买员工意外保险费会计分录未收到发票
  • 固定资产税前一次性扣除
  • 两个账户往来款怎么做现金流量表
  • 一般纳税人公司转让一般卖多少钱
  • 现金流量表中的现金即为货币资金
  • 小规模纳税人不能抵扣进项税额
  • 企业统计报表怎么写
  • 销售货物代垫的运费发生的增值税
  • 固定资产到期怎么处理
  • 建筑装饰行业会计分录
  • 建筑行业的收入是什么
  • 出口抵减内销产品应纳税额年终结转
  • 收到的软件退税怎么处理
  • 行政单位基建账统一核算
  • 收到原未计入应收项目的交易性金融资产的利息
  • 银行开户许可证什么时候开始取消的
  • 作废的发票怎么复制开新票
  • 这些常用的发票知识,你都知道了吗?
  • 可转换公司债券转股会计分录
  • 个人所得税核定征收税率是多少
  • 物料买回来再发货可以吗
  • 企业注销时未分配利润怎么处理
  • 非企业性单位包括哪些单位
  • 征信费用会计分录
  • 出口暂定关税
  • 收到母公司的投资款
  • 洗牙的利和弊
  • ipssvc.exe - ipssvc是什么进程 有什么作用
  • 笔记本如何打开无线网络开关
  • ati2sgag.exe进程安全吗 ati2sgag进程信息查询
  • php提高性能
  • PHP:imagefilledarc()的用法_GD库图像处理函数
  • 个体工商户筹集资金的难易程度
  • 增值税专用发票丢了怎么补救
  • 全面带你了解AIGC的风口
  • 区块链网站模板
  • runas命令详解
  • 计提坏账准备需要确认递延所得税吗
  • 餐饮行业的增值税
  • three.js gui
  • python如何运行
  • 劳务费发票为什么必须每月开
  • Linux下MySQL数据库的主从同步复制配置
  • mongodb入门教程
  • 企业短期借款的会计分录
  • 个税系统经营所得人员怎样添加
  • sqlserver避免死锁
  • 计提工会经费会计凭证怎么做分录
  • 发票一般会失效几天
  • 过期产品进项税用转出吗
  • 进项税留抵税额是什么意思
  • 公司突然改变工资结构
  • 土地前期开发费用属于开发成本吗
  • 收到的业务赔偿如何入账
  • 工程结算一般由什么等方式
  • 哪些资产减值损失确认过后是可以转回的
  • win8系统升级
  • ubuntu安装超详细教程
  • win7补丁部分更新没有安装
  • 如何知道文件的解压密码
  • win7电脑老是跳出弹窗广告怎么办
  • winxp开机黑屏只有光标
  • 在win8下能直接装win7吗
  • opencli
  • js表格上移下移
  • perl数组去重
  • Node.js中的全局对象有
  • 基于flask框架
  • lint 工具
  • js跨域的几种方法
  • jquery 画图
  • 移动应用界面设计形考1答案
  • 知道税率怎么算成本
  • 如何找回电子税务局企业密码
  • 如何查看税务登记信息
  • 增值税留抵退税政策
  • 土地的几种类型
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设