自制Unity小游戏TankHero-2D(1)制作主角坦克
2015-01-29 00:54
525 查看
自制Unity小游戏TankHero-2D(1)制作主角坦克
我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的,少数是从网上搜来的。您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。
围墙
这个脚本对上下左右四个围墙都适用,以后有了别的形状的围墙,也仍然适用。这也是它的优点之一。
说到这个围墙的反弹,就涉及摄像机跟随的一个问题。实际上,围墙反弹时,如果玩家持续撞击围墙,会使玩家坦克产生快速的震动。此时摄像机也就跟着快速震动,这很影响体验。上文里将跟随速度设置得比较低时,这种震动就不会影响到摄像机。这是因为,摄像机反应慢,震动速度快,不等摄像机需要向左跟随,就又要向右跟随了,所以摄像机基本上就在原地不动了。
将上文的 catchingSpeed 调大一些,再持续去撞墙,你就会明白了。
加上光源就成了这样:
点击Text后,会增加3个对象,Canvas,Text和EventSystem。
给Text对象添加一个DrawMouseInfo.cs的组件(名字无所谓)。
uGUI对象是可以在Scene视图里拖动的,只不过你要先找到它。
它的位置很奇葩,如上图所示,整个地图在它的Canvas脚下都很渺小。
坦克底座是SmartArt图形里的。
轮子只是设置了一下渐变填充。
炮塔的圆形,把底座的圆形缩小一点就是。炮塔的炮管,是“形状”里的箭头,删掉凸起的尖的部分,调整一下锚点长短就OK。
背景用的是“纹理填充”,看到第二行第一个了没?
准星,用的是SmartArt里的“分离射线”。把四个箭头留下,其它内容删除。再把箭头的尾部顶点删除,左右交换位置,上下交换位置,上个色就成了。
还可以吧?
请多多指教~
我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的,少数是从网上搜来的。您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。
public class PushBackToField : MonoBehaviour { Dictionary<Collider2D, Vector3> initialPositionDict;// = new Dictionary<Collider, Vector3>(); void Awake() { initialPositionDict = new Dictionary<Collider2D, Vector3> (); } void OnTriggerEnter2D(Collider2D other) { if (initialPositionDict.ContainsKey(other)) { initialPositionDict[other] = other.transform.position; } else { initialPositionDict.Add(other, other.transform.position); } } void OnTriggerStay2D(Collider2D other) { Push (other); } void OnTriggerExit2D(Collider2D other) { if (initialPositionDict.ContainsKey(other)) { initialPositionDict.Remove(other); } } void Push(Collider2D other) { Vector3 initialPosition = Vector3.zero; if (initialPositionDict.ContainsKey(other)) { initialPosition = initialPositionDict[other]; } else { Debug.LogError(string.Format("{0} should have been added to the dict.", other.gameObject.name)); } if ((initialPosition - other.transform.position).magnitude > 0.001f) { //Debug.Log("lerp push"); other.transform.position = Vector3.Lerp(other.transform.position, Vector3.zero, Time.deltaTime); } else { //Debug.Log("sudden push"); other.transform.position = initialPosition; } } }
围墙
这个脚本对上下左右四个围墙都适用,以后有了别的形状的围墙,也仍然适用。这也是它的优点之一。
说到这个围墙的反弹,就涉及摄像机跟随的一个问题。实际上,围墙反弹时,如果玩家持续撞击围墙,会使玩家坦克产生快速的震动。此时摄像机也就跟着快速震动,这很影响体验。上文里将跟随速度设置得比较低时,这种震动就不会影响到摄像机。这是因为,摄像机反应慢,震动速度快,不等摄像机需要向左跟随,就又要向右跟随了,所以摄像机基本上就在原地不动了。
将上文的 catchingSpeed 调大一些,再持续去撞墙,你就会明白了。
光源
忘了说,要添加一个线光源,不然场景会很暗淡。下图就是没有添加光源的样子。加上光源就成了这样:
显示文字
想显示上图所示的文字?用Unity最近推出的uGUI还是很舒服的(也可能是因为我没有学过nGUI等等的UI系统吧)。点击Text后,会增加3个对象,Canvas,Text和EventSystem。
给Text对象添加一个DrawMouseInfo.cs的组件(名字无所谓)。
public class DrawMouseInfo : MonoBehaviour { Text guiText; void Awake() { guiText = this.GetComponent<Text> (); } void Update () { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit)) { guiText.text = string.Format ("input: {0} mouse: {1} | {2}", Input.mousePosition, hit.point, hit.transform.gameObject.name); } else { guiText.text = string.Format ("input: {0} mouse: {1} | {2}", Input.mousePosition, "null", "null"); } } }
uGUI对象是可以在Scene视图里拖动的,只不过你要先找到它。
它的位置很奇葩,如上图所示,整个地图在它的Canvas脚下都很渺小。
快速自制贴图资源
本项目中的坦克、子弹、光标、背景图都是本人制作的,制作工具你猜猜?是PPT。坦克底座是SmartArt图形里的。
轮子只是设置了一下渐变填充。
炮塔的圆形,把底座的圆形缩小一点就是。炮塔的炮管,是“形状”里的箭头,删掉凸起的尖的部分,调整一下锚点长短就OK。
背景用的是“纹理填充”,看到第二行第一个了没?
准星,用的是SmartArt里的“分离射线”。把四个箭头留下,其它内容删除。再把箭头的尾部顶点删除,左右交换位置,上下交换位置,上个色就成了。
还可以吧?
总结
您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。请多多指教~
相关文章推荐
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
- 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
- 自制Unity小游戏TankHero-2D(3)开始玩起来
- Unity2D 制作小游戏FlappyBird心得—Unity5学习笔记
- 【Unity 2017.3 制作安卓2D单机手游】2.这就开始做
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D
- 关于Unity5.5中2D动画的制作
- unity 2D游戏开发 制作帧动画的两种方法
- 【个人Unity笔记】{基础} 2D小游戏一个简单的自动刷怪脚本
- 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation
- unity5.5版本制作UFO2D项目
- Unity2d 5.1 弱联网游戏制作 (一)场景创建、添加组件、精灵移动、主摄像机跟随
- 开发者分享使用Unity制作2D游戏的技巧
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D
- 第一个游戏动作开发日志——Unity2D的血条制作
- Unity5.x制作合金弹头(二)-主角的创建
- Unity-3D捕鱼达人小游戏开发 —— 游戏中精灵动画的制作
- 制作2D小游戏 “别踩白块儿”(2最终版)
- 【Unity&2D】使用Unity制作2D像素游戏用到的使用插件