Unity色子的投掷与点数的获得(详解)
前几天需要一个色子的投掷并且获得朝上点数的Unity脚本,在网上找了很多,都是一个模子刻出来的。
对于2018版的我来说,网上找的都是很早就弃用了的老版本。
好不容易能运行了,结果并不理想,于是又突发奇想做了一个菜鸟专属的色子。
大家可以参观一下,实测Unity2018.1.1f能用。
话不多说先上图。


场景的搭建我就不多说了,主要还是色子。
首先,我们需要自己做出色子的六个面(我菜只想到这种方法,反正实现了就行)。

然后根据色子上的点数将每个面改名为一个特有的名字。
我这里为了方便直接用的1 2 3....来命名。
最后给他加上刚体Rigidbody让色子更加真实。
PS:多出来的GameObject是为了调整他的中心点,方便旋转。

接下来,我们让色子旋转起来!
就当鼠标左键点击使,分别给X,Y,Z方向上一个随机值。
然后在色子当前的位置上加上所需要旋转的角度。
这里我们给了一个计时器timer,让他旋转两秒。
if (Input.GetMouseButtonDown())
{
isdebug = true;
//取XYZ的随机旋转值
p_x = Random.Range(minrot, maxrot);
p_y = Random.Range(minrot, maxrot);
p_z = Random.Range(minrot, maxrot);
timer = 0.0f;//点击后计时器清零
}
if(timer<2.0f)//规定 旋转时间为两秒
{
//旋转色子
transform.Rotate(new Vector3(transform.rotation.x+p_x, transform.rotation.y + p_y, transform.rotation.z + p_z));
}
然后我们通过GetNum来获取色子停止时向上的面的名字,
再根据名字得到它的点数。
这里由于我们直接设的数字,
将得到的名字转化为int型就可以了。
void GetNum()
{
Transform[] obj=new Transform[];//声明数组存放色子的六个面
Transform upobj= transform.GetChild().GetChild();//声明朝上的面
for(int i=;i<;i++)//循环判断哪个面朝上
{
obj[i]=transform.GetChild().GetChild(i);
if(obj[i].position.y>upobj.position.y)
{
upobj = obj[i];
}
}
num = int.Parse(upobj.name);//将朝上面 的名字 转化为int
}
接下来点击左键,就可以获取到我们的数据了。
有问题欢迎留言交流。
大家一起学习,一起进步。
(我是菜鸟,大神勿喷!)
Unity色子的投掷与点数的获得(详解)的更多相关文章
- (转) unity 在移动平台中,文件操作路径详解
http://www.unitymanual.com/thread-23491-1-1.html 今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够 ...
- Unity 3D光源-Directional平行光/逆光效果,光晕详解、教程
Unity4大光源之平行光 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...
- unity 在移动平台中,文件操作路径详解
今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够更好.更快的掌握,当然,如有不足的地方 欢迎指正!!! 相信大家在开发过程中,难免会保存一些文件在 ...
- 【Unity编程】Unity中关于四元数的API详解
本文为博主原创文章,欢迎转载,请保留出处:http://blog.csdn.net/andrewfan Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计 ...
- Unity Jobsystem 详解实体组件系统ECS
原文摘选自Unity Jobsystem 详解实体组件系统ECS 简介 随着ECS的加入,Unity基本上改变了软件开发方面的大部分方法.ECS的加入预示着OOP方法的结束.随着实体组件系统ECS的到 ...
- Unity 灯光系统详解
Unity 灯光系统详解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心 ...
- [翻译]Unity中的AssetBundle详解(三)
构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们 ...
- 「翻译」Unity中的AssetBundle详解(二)
为AssetBundles准备资源 使用AssetBundles时,您可以随意将任何Asset分配给所需的任何Bundle.但是,在设置Bundles时,需要考虑一些策略.这些分组策略可以使用到任何你 ...
- 「翻译」Unity中的AssetBundle详解(一)
AssetBundles AssetBundle是一个存档文件,其中包含平台在运行时加载的特定资产(模型,纹理,预制,音频剪辑,甚至整个场景).AssetBundles可以表示彼此之间的依赖关系;例如 ...
随机推荐
- Telnet 安装
Telnet 安装 一.Telnet 安装 (1) 登录目标主机检测 telnet 服务是否正常 [root@localhost ~]# telnet localhost -bash: telnet: ...
- linux 硬盘分区攻略
以下的sdX代表硬盘分区(如sda1,sda2,sdb1...等等),如果已有的硬盘分区需要改变大小的话,请参考另一篇文章. /boot:开机用的磁盘空间了,至少78MB,一般给100MB就好了. / ...
- circos 绘制关系型图ribbon,并加入透明度
luminance = lum80<<include colors_fonts_patterns.conf>><colors># r,g,b,a color def ...
- Windows Server 2012如何实现双网卡绑定
在windows server 2012 之前我们在服务器上如果要实现双网卡绑定则需要向服务器厂家所要相应的软件,但是现在强大的windows server 2012的到来使我们省去了所有的麻烦,因为 ...
- Vim配置(转)
1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表头:包括文件名.作者.联系方式. ...
- hibernate createQuery和createSQLQuery 查询结果count计算
createQuery 针对hql语句查询 Query query=getSession().createQuery(hql);int result =((Number) query.iterate( ...
- CodeForces - 589J —(DFS)
Masha has recently bought a cleaner robot, it can clean a floor without anybody's assistance. Schema ...
- 日期函数、时间函数总结(MySQL 5.X)
一.MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now(); +---------------------+ ...
- vc6.0 PK vs2010
从VC++6.0不足看VisualC++2010新特性 说起VC,有人想到维生素C(维C),有人想到风险投资(venture capital), 程序员们尤其是做底层开发的程序员或老程序员们第一感觉肯 ...
- Code Review Checklist and Guidelines for C# Developers
Checklist1. Make sure that there shouldn't be any project warnings.2. It will be much better if Code ...