如果在 unity中滚动 3D 骰子
来源:互联网 发布:塔里木农垦大学知乎 编辑:程序博客网 时间:2024/05/21 07:10
孙广东 2015.8.16
目的: 这篇文章的主要目的是为了让您了解有关如果在 unity中滚动 3D 骰子
建设一个棋盘游戏 但因为骰子困扰 ;
这个问题分为两个主要部分:
如何掷骰子。
确定是 1和6之间的随机一个整数面值 (六面临标准骰子)。
如何掷骰子
步骤-1: 将标准骰子模型导入 unity3D。调整Transform ,如图所示,将 刚体添加到它。
步骤 -2: 现在将代码片段添加 到脚本 。
注: 这段代码使您能够使用鼠标触发 ,如果进行适当更改,你可以轻松地变为触摸设备。
if (Input.GetMouseButtonDown (0)){//initial click to roll a diceinitPos = Input.mousePosition; //return x component of dice from screen to view pointinitXpose = cam.ScreenToViewportPoint (Input.mousePosition).x;} //current position of mouseVector3 currentPos = Input.mousePosition; //get all position along with mouse pointer movementVector3 newPos = cam.ScreenToWorldPoint (newVector3(currentPos.x,currentPos.y,Mathf.Clamp(currentPos.y/10,10,50))); //translate from screen to world coordinates newPos = cam.ScreenToWorldPoint (currentPos); if (Input.GetMouseButtonUp (0)){initPos = cam.ScreenToWorldPoint (initPos); //Method use to roll the diceRollTheDice(newPos);//use identify face value on diceStartCoroutine(GetDiceCount ());} //Method Roll the Dicevoid RollTheDice(Vector3 lastPos){ diceObject.rigidbody.AddTorque(Vector3.Cross(lastPos, initPos) * 1000, orceMode.Impulse);lastPos.y += 12;diceObject.rigidbody.AddForce (((lastPos - initPos).normalized) * (Vector3.Distance (lastPos, initPos)) * 25 * duceObject.rigidbody.mass);}
步骤-3: RollTheDice 方法是如何工作的:
最初,掷骰子时 扭矩Torque 被添加 旋转骰子。然后 力Force 被增加, 所以它会给真正的骰子被滚动的外观和感觉。
转矩的计算使用 交叉产品的 lastPos 和 initPos 对移动旋转像真正的骰子,并将在鼠标的方向移动 。
同样添加力Force ,以掷骰子的鼠标的方向。
//Coroutine to get dice countvoid GetDiceCount(){if (Vector3.Dot (transform.forward, Vector3.up) > 1)diceCount = 5;if (Vector3.Dot (-transform.forward, Vector3.up) > 1)diceCount = 2;if (Vector3.Dot (transform.up, Vector3.up) > 1)diceCount = 3;if (Vector3.Dot (-transform.up, Vector3.up) >1)diceCount = 4;if (Vector3.Dot (transform.right, Vector3.up) >1)diceCount = 6;if (Vector3.Dot (-transform.right, Vector3.up) >1)diceCount = 1;Debug.Log ("diceCount :" + diceCount);}
步骤-4: 以上代码段说明如何确定在骰子上随机的面值。
这段代码必须包含在脚本中, 骰子在hierarchy和transforms 应该是如图 1 所示。
点数用于查找哪一张脸是将被考虑。
2 0
- 如果在 unity中滚动 3D 骰子
- OpenGL 3D骰子
- Unity 3D循环滚动效果
- Unity 3D项目问题笔记 //01_在 unity 中切割 2D图片
- html实现3D骰子
- 如何在Unity 3D中设置Google AdMod
- Unity在Scene中自定义3D ICONS
- Unity 2D背景滚动
- 编写函数模拟掷骰子的游戏(两个骰子)。第一次掷的时候,如果点数之和为7或11则获胜;如果点数之和为2、3或12则落败;其他情况下的点数之和称为“目标”,游戏继续。在后续的投掷中,如果玩家再次掷出“目标
- vert fragment shader在unity中如果实现光照阴影
- 如何在 Unity 2D 和 3D 中放大或缩小以及点击屏幕
- Java 3D 骰子动画代码范例
- 在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
- Unity 2D 实现屏幕滚动
- Unity 3d中相关方法总结
- 《天龙八部3D》中Unity使用介绍
- 《天龙八部3D》中Unity使用介绍
- Unity中实现3D物体跳跃
- python操作MySQL
- Struts2中validator校验器不起作用的情况
- hdu2064汉诺塔递推
- 找出字符串中第一个只出现一次的字符
- leetcode 146 —— LRU Cache
- 如果在 unity中滚动 3D 骰子
- 车行无忧 v5.0.3 安卓版
- Mysql数据库事务的隔离级别和锁的实现原理分析
- 添加VLC录像API
- HDU 4883 TIANKENG’s restaurant(排序或优先队列模拟)——BestCoder Round #2
- ASP.NET第一章总结
- UIWebView与JS的深度交互
- java的多线程同步及锁的机制 http://f.dataguru.cn/thread-483280-1-1.html (出处: 炼数成金)
- Codeforces Round #315 (Div. 1)