Unity3D游戏开发之《愤怒的小鸟》弹弓实现技能培训

今天我们来做一个高端大气上档次的东西。我相信大家都玩过一款叫做《愤怒的小鸟》的游戏,这款游戏之所以能够受到玩家的喜爱,是因为这是一款物理游戏,在游戏中处处充满了物理。我们熟悉的抛物线、引力等物理元素都在这款游戏中得到了体现。那么《愤怒的小鸟》这款游戏使用的正是Unity引擎,所以我们在游戏中看到了各种各种有趣的物理现象。那么,我们今天呢,就以《愤怒的小鸟》游戏中的小鸟发射器——弹弓为例,来讲述在Unity中如何实现弹性效果。

下面我们开始今天的Unity3D游戏开发技能培训。 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D、3D小规模游戏及网页游戏开发。

首先,我们来引入一个新的概念——LineRenderer。在Unity3D中LineRenderer被称为线性渲染器。通过这个组件,我们可以做一些比较有创意的东西,比如在游戏中绘制线段、制作激光特效、武器拖尾效果等。那么今天呢,我们是用LineRenderer来构造弹弓两边的绳子,这个绳子是具有弹性的,在受力结束后可以恢复到原来的状态。我们首先创建一个如下图的简单场景:

在上面的场景中,两边的柱子作为固定绳子的物体,小球在两根绳子中间。我们希望实现的是:

当用户按下鼠标左键并移动鼠标的时候,小球和绳子都将跟着移动,当松开鼠标左键的时候,小球以一定的角度和一定的力发射出去。我们今天着重来讲绳子的实现。首先我们创建一个空的GameObject将坐标值设为原点,命名为RopeL。接下来我们通过Component->Effects->Line Renderer为添加一个线性渲染器组件。如图:

我们设定好上述参数后,就可以开始编写脚本了,这里两根绳子是对称的:

[csharp] view plaincopyprint?

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Ball : MonoBehaviour {
  4. //鼠标位置
  5. private Vector3 MousePos;
  6. //左侧LineRenderer
  7. private LineRenderer LineL;
  8. //右侧LineRenderer
  9. private LineRenderer LineR;
  10. void Start ()
  11. {
  12. //获取LineRenderer
  13. LineL=GameObject.Find("Shootor").transform.FindChild("RopeL").
  14. transform.GetComponent<LineRenderer>();
  15. LineR=GameObject.Find("Shootor").transform.FindChild("RopeR").
  16. transform.GetComponent<LineRenderer>();
  17. }
  18. void Update ()
  19. {
  20. if(Input.GetMouseButton(0))
  21. {
  22. //获取鼠标位置
  23. MousePos=Camera.main.ScreenToViewportPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,-2F));
  24. //设置小球的位置
  25. transform.position=MousePos;
  26. //重新设置LineRenderer的位置
  27. LineL.SetPosition(0,new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
  28. LineR.SetPosition(0,new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
  29. }
  30. if(Input.GetMouseButtonUp(0))
  31. {
  32. //获取鼠标位置
  33. MousePos=Camera.main.ScreenToViewportPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,-2F));
  34. //设置小球的位置
  35. transform.position=MousePos;
  36. //重新设置LineRenderer的位置
  37. LineL.SetPosition(0,new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
  38. LineR.SetPosition(0,new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
  39. //计算小球合力方向
  40. Vector3 Vec3L=new Vector3(-2F-MousePos.x,1.8F-MousePos.y,0F-MousePos.z);
  41. Vector3 Vec3R=new Vector3(2F-MousePos.x,1.8F-MousePos.y,0F-MousePos.z);
  42. Vector3 Dir=(Vec3L+Vec3R).normalized;
  43. //获取刚体结构
  44. transform.GetComponent<Rigidbody>().useGravity=true;
  45. transform.GetComponent<Rigidbody>().AddForce(Dir*10F,ForceMode.Impulse);
  46. //恢复LineRenderer
  47. LineL.SetPosition(0,new Vector3(0F,1.8F,0F));
  48. LineR.SetPosition(0,new Vector3(0F,1.8F,0F));
  49. }
  50. }
  51. }

我们给小球加上刚体后,绑定这段脚本就可以了。我们需要注意的问题有:

1、这里的力是给定的大小,我们可以根据绳子被拉长的距离使用一个弹性系数来计算力的大小。

更多精彩请到http://www.gopedu.com/

2、计算合力的方向时,我们首先计算两边绳子的向量值,然后将这两个向量想加即可得到我们的合力方向。

好了,我们一起来看今天的效果演示吧!

时间: 2024-11-05 10:32:02

Unity3D游戏开发之《愤怒的小鸟》弹弓实现技能培训的相关文章

Unity3D游戏开发之实现血条技能培训

下面我们开始今天的Unity3D技能培训. 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天呢,我们来做一个在游戏中十分重要的组成元素:血条.血条是什么呢?血条是生命值的一种体现,就像<仙剑奇侠传三>电视剧中,当景天说他想让那些被邪剑仙害死的人活过来的时候,天帝说需要等量的生命值来换,所以电视剧中的结局就变成了景天留在世上的时间并不多了,雪见依偎着他坐在新安当门口的时候,天上忽然下起了雪.聊完了游

Unity3D游戏开发之网络游戏服务器架构设计培训

下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好的主程 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题: 1.服务器跑在什么样的操作系统环境下?2.采用哪几种语言开发?主要是什么?3.服

Unity3D游戏开发之网络游戏服务器架构设计培训(如何做一名好主程)

在我们初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发.后面就应该朝着主程的方面前进 今天给大家讲一下如何做一个好的主程 入手 假如,我现在接手一个新项目,我的身份还是主程序.在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题: 1.服务器跑在什么样的操作系统环境下?2.采用哪几种语言开发?主要是什么?3.服务器和客户端以什么样的接口通讯?4.采用哪些第三方的类库? 除了技术背

Unity3D游戏开发之《愤怒的小鸟》弹弓实现的技能培训

下面我们开始今天的Unity3D游戏开发技能培训. 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天我们来做一个高端大气上档次的东西.我相信大家都玩过一款叫做<愤怒的小鸟>的游戏,这款游戏之所以能够受到玩家的喜爱,是因为这是一款物理游戏,在游戏中处处充满了物理.我们熟悉的抛物线.引力等物理元素都在这款游戏中得到了体现.那么<愤怒的小鸟>这款游戏使用的正是Unity引擎,所以我们在游戏中

Unity3D游戏开发之《愤怒的小鸟》弹弓怎么实现

下面我们开始今天的Unity3D游戏开发技能培训. 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天我们来做一个高端大气上档次的东西.我相信大家都玩过一款叫做<愤怒的小鸟>的游戏,这款游戏之所以能够受到玩家的喜爱,是因为这是一款物理游戏,在游戏中处处充满了物理.我们熟悉的抛物线.引力等物理元素都在这款游戏中得到了体现.那么<愤怒的小鸟>这款游戏使用的正是Unity引擎,所以我们在游戏中

Unity3D游戏开发之如何截屏的技能培训

下面我们开始今天的Unity3D技能培训. 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天我们来做点简单的东西,做个什么呢?答案就是截屏.作为一名热爱单机游戏的玩家,每次在玩游戏的同时截取游戏中比较喜欢的画面,特别是学习了Unity3D以后玩游戏的时候更多地是从一个游戏设计者的角度来看待游戏,换句话说,可能关注技术的成分更多一点吧.比如在写<Unity3D游戏开发之自由视角下的角色控制>和<

unity3d游戏开发之简单的透明shader技能培训

下面我们开始今天的Unity3D游戏开发技能透明shader技能培训. 我们学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. [plain] view plaincopy // Shader created with Shader Forge Beta 0.34 // Shader Forge (c) Joachim Holmer - http://www.acegikmo.com/shaderforge/

Unity3D游戏开发初探—2.初步了解3D模型基础

一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被.机械等等,比如一个大楼的3D模型图.3D模型也包括玩具和电脑模型领域. 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.网络游戏.虚拟社区.电子商务.远程教育等等.甚至对于旅游业,3D互联网也能

Unity3D游戏开发之当游戏开发遇上Excel

各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://blog.csdn.net/qinyuanpei. 今天我们的话题是Excel,作为常用的办公软件的Excel相信大家都不陌生啦.可是如果我们认为Excel只是办公软件的话,那么这就不只是天真而是Out了.事实上Excel和游戏开发有着密切的联系,不知道大家还记不记得那款利用Excel开发出来的三国杀,这可能是Excel第一次以游戏开发的身份出现在大家面前吧.我们知道在游戏开发领域有一种工作叫做策划,就像在软件开发领