Unity 4 3 制作一个2D横版射击游戏
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
1.创建第一个场景
接着在"Hierarchy"面板上创建多个空对象,形成以下结构:
2.添加显示背景
在场景中添加一个Sprite游戏对象,设置其"Sprite"属性为刚才导入的背景图片。重命名这个对象为"Background1",将其移动到"Level -> 0 - Background"里面,设置其"Position"为(0, 0, 0)。接着添加背景元素。导入平台图片到"Textures"文件夹,选中"platforms"图片,设置其"Sprite Mode"为"Multiple",然后点击"Sprite Editor",如下图所示:
创建一个新的Sprite游戏对象,设置其"Sprite"属性为"platform1"。再在创建新Sprite对象,设置其"Sprite"属性为"platform2"。将它们放置到"1 - Middleground"对象里,并且确认它们的Z坐标为0。将这两个对象从"Hierarchy"面板拖动到"Project"面板下的"Prefabs"文件夹,保存成预制对象。接着,为了避免显示顺序问题,修改下游戏对象的Z坐标,如下所示:
Layer | Z Position |
0 - Background | 10 |
1 - Middleground | 5 |
2 - Foreground | 0 |
3.创建主角和敌人
可以看到主角往下落了,这是因为刚体带有重力,但在这个游戏不需要用到,将"Gravity Scale"属性设为0即可。另外,不想因为物理而引起的主角旋转,则将"Fixed Angles"属性勾选上。完整的设置如下图所示:
开始准备让主角移动。在"Scripts"文件夹里,创建一个C#脚本,名称为"PlayerScript",实现让方向键移动主角,代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using UnityEngine;
/// <summary> // 2 - Store the movement void Update() // 4 - Movement per direction } void FixedUpdate() |
这里以改变刚体的速率来达到主角的移动,而不是通过直接改变"transform.Translate",因为那样的话,可能会不产生碰撞。将此脚本附加到主角对象上,现在运行,方向键来控制移动,如下图所示:
接下来,添加第一个敌人。导入章鱼敌人图片到"Textures"文件夹,创建一个Sprite游戏对象,命名为"Poulpi",设置其"Sprite"属性为刚才导入的图片,设置"Scale"属性为(0.4, 0.4, 1),添加"Box Collider 2D"组件,其Size为(4, 4),添加"Rigidbody 2D"组件,其"Gravity Scale"属性为0,并且勾选"Fixed Angles"属性框。将对象保存为预制。在这里只让章鱼简单地往前行,创建一个脚本,命名为"MoveScript",代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using UnityEngine;
/// <summary> /// <summary> /// <summary> private Vector2 movement; void Update() void FixedUpdate() |
此时如果将主角放在章鱼前面,两个对象将会产生碰撞,互相阻塞对方的移动。
4.射击
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using UnityEngine;
/// <summary> /// <summary> /// <summary> void Start() |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using UnityEngine;
/// <summary> /// <summary> /// <summary> if (hp <= 0) void OnTriggerEnter2D(Collider2D otherCollider) // Destroy the shot |
如果章鱼的生命值大于子弹的伤害值,那么章鱼就不会被消灭,可以试着通过改变章鱼对象的"HealthScript"的hp值。接着,准备可以射击。创建一个脚本,命名为"WeaponScript",代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
using UnityEngine;
/// <summary> /// <summary> /// <summary> //-------------------------------- private float shootCooldown; void Start() void Update() //-------------------------------- /// <summary> // Create a new shot // Assign position // The is enemy property // Make the weapon shot always towards it /// <summary> |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
void Update()
{ // ... // 5 - Shooting if (shoot) // ... |
接下来,准备创建敌人的子弹。导入敌人子弹图片到"Textures"文件夹,选中"PlayerShot"预制体,按下Ctrl+D进行复制,命名为"EnemyShot1",然后改变其Sprite为刚才导入的图片,设置其Scale为(0.35, 0.35, 1)。接着,让章鱼可以射击。将"WeaponScript"脚本附加到章鱼对象上,拖动"EnemyShot1"预制体到其"Shot Prefab"属性,创建一个脚本,命名为"EnemyScript",用来简单地每一帧进行自动射击,代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using UnityEngine;
/// <summary> void Awake() void Update() |
可以看到章鱼向右射击了子弹,这是因为代码就是让它那么做的。实际上,应该做到可以朝向任何方向射击子弹。在这里,创建一个空对象,命名为"WeaponObject",删除章鱼预制体身上的"WeaponScript"脚本,将"WeaponScript"脚本附加到"WeaponObject"对象上,并且拖动"EnemyShot1"预制体到其"Shot Prefab"属性,设置"WeaponObject"对象的"Rotation"属性为(0, 0, 180),然后保存为预制,如下所示:
Unity 4 3 制作一个2D横版射击游戏相关推荐
- Unity 4 3 制作一个2D横版射击游戏 2
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...
- Unity 4.3 制作一个2D横版射击游戏(2)
在上一篇<Unity 4.3 制作一个2D横版射击游戏>时,已经完成一个基本的射击游戏了.在这一篇将继续完善. 1.视差卷轴效果 为了达到这种视差卷轴的效果,可以让背景层以不同的速度进行移 ...
- Unity 4.3 制作一个2D横版射击游戏
这是一个横版射击游戏. 教程来自: http://pixelnest.io/tutorials/2d-game-unity/ 中文版教程: http://www.litpo.com/categor ...
- Unity3D开发一个2D横版射击游戏
教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...
- Unity学习笔记3 简易2D横版RPG游戏制作(三)
这一篇本来应该是在上一篇后面直接补进去的.不过因为排版的问题.所以我就另开一篇来整理了,好了,废话不多说,马上整理: 十八.关卡的锁定与解锁 前面我们已经解决了在游戏开始时可以选择关卡的问题,接下来我 ...
- unity3d游戏2d横版射击游戏完整项目源码分享
unity3d游戏2d横版射击游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1YwhEy7DeKIHFU8pBLdJFPg 提取码:3wnx 复制这段内容 ...
- Unity学习笔记1 简易2D横版RPG游戏制作(一)
这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...
- Unity学习笔记2 简易2D横版RPG游戏制作(二)
十二.敌人受攻击时的闪烁和Player的生命值的修正 上一篇中,我们利用Controller2D中的IEnumerator TakenDamage接口,使得我们的Player受到攻击时会进行闪烁,我们 ...
- 【CSON原创】基于HTML5的横版射击游戏发布
功能说明: 基于HTML5的横版射击游戏,参考自flash游戏<双面特工>.左右方向键控制移动,下方向键蹲下,上方向键跳跃,空格键射击.体验前请先关闭输入法. 该游戏基于自己开发的HTML ...
最新文章
- CSS结构选择器四种结构关系的范围
- iOS11和iPhone X的适配
- 通俗易懂的图解堆排序
- React开发(199):参数请求错误修改请求
- java 字符查找 截断_java字符串常用操作(查找、截取、分割)
- 一加9 Pro真机图曝光:哈苏相机联名logo助力影像旗舰
- java双机和集群的区别,java 分布式与集群的区别和联系
- hooks taro 下拉刷新_Hooks
- docker运行jenkins挂掉_docker搭建jenkins
- Arduino+sim800 gsm收发短信
- 单例模式详解(线程安全,饿汉,懒汉模式)
- Rayman的绝顶之路——Leetcode每日一题打卡20
- 【MatLab fdatool】Butterworth 低通 带阻 滤波器 (MatLab C++)
- 世界杯最野蛮大战,巴西付出慘重代价步入四强
- 被遗忘的数学家!曾提出最接地气的数学定理,可以计算男朋友真不真心的那种......
- 从零到百亿互网融构展
- Cocos实战案例:高手解析《捕鱼达人3》怎样玩3D
- 2019年互联网公司月饼颜值大比拼!
- vue 移动端头像裁剪_移动端 上传头像 并裁剪功能(h5)
- 基本:HEX文件格式定义
热门文章
- CentOS上快速安装Oracle服务器脚本
- Oracle数据库之间数据同步 -- DBLink
- 解决小程序图片在开发者工具能显示,测试时真机不显示问题
- Android udp json+数组 ---gt;bytes发送数据
- docker随着主机启动 自动启动设置
- okHttp记录---response.body().string()输出的结构是乱码
- 阿里前端开源的一些产品
- mvp内粗泄露问题_如何在一小时内启动MVP服务器
- 错过校招_您可能错过的Web优化技巧
- C++ 学习笔记---零散的基础知识