Unity3D游戏开发之跑酷游戏项目讲解

上传人:宝路 文档编号:5721959 上传时间:2017-09-07 格式:DOC 页数:11 大小:1.75MB
返回 下载 相关 举报
Unity3D游戏开发之跑酷游戏项目讲解_第1页
第1页 / 共11页
Unity3D游戏开发之跑酷游戏项目讲解_第2页
第2页 / 共11页
Unity3D游戏开发之跑酷游戏项目讲解_第3页
第3页 / 共11页
Unity3D游戏开发之跑酷游戏项目讲解_第4页
第4页 / 共11页
Unity3D游戏开发之跑酷游戏项目讲解_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Unity3D游戏开发之跑酷游戏项目讲解》由会员分享,可在线阅读,更多相关《Unity3D游戏开发之跑酷游戏项目讲解(11页珍藏版)》请在金锄头文库上搜索。

1、骑士团 Unity3D 系列教程培训 群号:193521697 今天主题就是Unity3D 游戏开发之跑酷游戏项目讲解。一、游戏策划游戏采用 2D 界面,角色从左到右奔跑,在路段中随机生成障碍物和金币,玩家需要使用跳跃功能躲开障碍物,在游戏中玩家收集的金币数目越多,奔跑的距离越长,玩家的得分就越高。我们最终实现的界面效果如图所示,首先我们来讲一下游戏的原理,我们这里这里采用的方法是路段固定,移动摄像机的方法。换句话说,当角色开始移动后,摄像机和场景跟随角色缓缓向右移动。当角色跑完每一个路段距离的 2/3 时,计算下一路段的位置,并在该位置生成一个新的路段,这样在游戏场景中可以产生无限远的路段,

2、当某一路段离开摄像机视野时,立即将其销毁。于此同时,我们在每一个路段上随机产生障碍物和金币,然后对角色做碰撞检测即可。二、角色控制骑士团 Unity3D 系列教程培训 群号:193521697 角色控制这里,我们只关注角色的状态,即角色是处于奔跑状态还是死亡状态。通过这一状态,我们针对角色采取不同的处理方式。如果角色处于奔跑状态,则更新角色位置、摄像机位置、背景位置,否则角色将在被障碍物撞到以后倒地死亡。我们来一起看下面的脚本:csharp view plaincopyprint?1. using UnityEngine; 2. using System.Collections; 3. 4.

3、public class Player : MonoBehaviour 5. 6. /定义角色移动速度 7. public float mMoveSpeed=2.5F; 8. 9. /摄像机 10. private Transform mCamera; 11. /背景图片 12. private Transform mBackground; 13. 14. /角色是否在奔跑 15. private bool isRuning=true; 16. /场景中路段总数目 17. private int mCount=1; 18. 19. /路段预设 20. public GameObject Cub

4、eWay; 21. 22. /死亡动画播放次数 23. private int DeathCount=0; 24. 25. /收集的金币数目 26. private int mCoinCount=0; 27. public int CoinCount 28. get 29. return mCoinCount; 30. 31. 32. 33. /当前奔跑距离 34. private int mLength=0; 35. public int Length 36. get 骑士团 Unity3D 系列教程培训 群号:193521697 37. return mLength; 38. 39. 40

5、. 41. /当前得分 42. private int mGrade=0; 43. public int Grade 44. get 45. return mGrade; 46. 47. 48. 49. void Start () 50. 51. /获取相机 52. mCamera=Camera.main.transform; 53. /获取背景 54. mBackground=GameObject.Find(Background).transform; 55. 56. 57. void Update () 58. 59. /如果角色处于奔跑状态则移动角色、相机和场景 60. if(isRun

6、ing) 61. 62. Move(); 63. CreateCubeWay(); 64. Jump(); 65. UpdateData(); 66. else 67. 68. Death(); 69. 70. 71. 72. / 73. / 更新玩家的游戏数据 74. / 75. private void UpdateData() 76. 77. /计算奔跑距离 78. mLength=(int)(transform.position.x+25)*25); 79. /计算玩家得分 骑士团 Unity3D 系列教程培训 群号:193521697 80. mGrade=(int)(mLength

7、*0.8+mCoinCount*0.2); 81. 82. 83. 84. /角色死亡 85. private void Death() 86. 87. /为避免死亡动画在每一帧都更新,使用 DeathCount 限制其执行 88. if(DeathCount0.125F) 119. 120. float y=transform.position.y-0.02F; 骑士团 Unity3D 系列教程培训 群号:193521697 121. transform.position=new Vector3(transform.position.x,y,transform.position.z); 12

8、2. transform.animation.Play(Run); 123. 124. 125. 126. /移动角色、相机和场景 127. private void Move() 128. 129. /让角色从左到右开始奔跑 130. transform.Translate(Vector3.forward * mMoveSpeed * Time.deltaTime);131. /移动摄像机 132. mCamera.Translate(Vector3.right * mMoveSpeed * Time.deltaTime); 133. /移动背景 134. mBackground.Trans

9、late(Vector3.left * mMoveSpeed * Time.deltaTime); 135. 136. 137. /创建新的路段 138. private void CreateCubeWay() 139. 140. /当角色跑完一个路段的的 2/3 时,创建新的路段 141. /用角色跑过的总距离计算前面 n-1 个路段的距离即为在第 n 个路段上跑过的距离142. if(transform.position.x+30-(mCount-1)*50 =50*2/3) 143. 144. /克隆路段 145. /这里从第一个路段的位置开始计算新路段的距离 146. GameObj

10、ect mObject=(GameObject)Instantiate(CubeWay,new Vector3(-5F+mCount * 50F,0F,-2F),Quaternion.identity); 147. mObject.transform.localScale=new Vector3(50F,0.25F,1F); 148. /路段数加 1 149. mCount+=1; 150. 151. 152. 153. void OnTriggerEnter(Collider mCollider) 154. 155. /如果碰到的是金币,则金币消失,金币数目加 1; 156. if(mCol

11、lider.gameObject.tag=Coin) 157. 158. Destroy(mCollider.gameObject); 骑士团 Unity3D 系列教程培训 群号:193521697 159. mCoinCount+=1; 160. 161. /如果碰到的是障碍物,则游戏结束 162. else if(mCollider.gameObject.tag=Rock) 163. 164. isRuning=false; 165. 166. 167. 在这里我们需要关注下面的内容:1、Update()方法及 Move()、Jump() 、CreateCubeWay()、Death()方

12、法,因为这是角色在奔跑过程中的核心控制方法。2、CreateCubeWay() 方法的作用是在玩家跑完每一个路段的 2/3 时,在指定的位置生成新的路段。假设当前场景中共有 n 个路段,玩家在每一个路段上奔跑的距离=用玩家从起点到当前位置的长度-前面 n-1 个路段的距离。通过这种方法我们可以判断玩家在每一个路段上的相对位置。在确定了这个位置后,我们将其与路段长度的 2/3 比较,如果大于或者等于这个距离,则生成新的路段,且第 n+1 个路段的位置等于第一个路段的位置+n 个路段的总长度。由此,我们就实现了在指定的位置生成新的路段,使场景中源源不断的生成新的路段。3、玩家收集金币和障碍物的碰撞检测都是在 OnTrigger 方法中实现的,我们使用了一个 bool 类型的标识变量 isRuning 来表示角色的状态,此状态直接影响 Update()方法的执行,大家可以从代码中自己去寻找。4、这里角色的跳跃是通过脚本模拟出来的,因为这里使用刚体似乎不能实现如果想实现的那种效果,大家可以参考 Jump()方法。三、场景布设这里我

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号