Unity 4.3 制作一个2D横版射击游戏
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),然后保存为预制,如下所示:
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 |
using System.Collections.Generic;
using UnityEngine; /// <summary> void Awake() void Update() |
按这种方式,可以轻易实现多个方向的射击。复制添加一个" WeaponObject"对象,让这两个" WeaponObject"对象的旋转不同即可。现在主角被章鱼攻击到,但是没有任何伤害。将" HealthScript"脚本附加到主角对象上,确保" Is Enemy"属性不被勾选。现在运行,可以看到如下结果:
目前,当主角和章鱼碰撞时,仅仅只是阻碍对方的移动而已,在这里改成互相受到伤害。打开" 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 |
//PlayerScript.cs
//.... void OnCollisionEnter2D(Collision2D collision) // Collision with enemy damagePlayer = true; // Damage the player |
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://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...
- 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 ...
最新文章
- python爬虫赚钱途径-如何利用python爬虫挣钱
- 3500字的txt文件_split文件拆分与合并,看完还不会,拿头拍我
- android MotionEvent中getX()和getRawX()的区别
- django-oscar-paypal出现UnicodeEncodeError: 'latin-1' codec can't encode characters in position XXXX
- 读再多书都没觉得自己变强?试试我这“5年陈”的方法
- 函数计算搭建 Serverless Web 应用(一)- HTTP 触发器
- dingding post POST请求
- 生成对抗网络与图像分割
- GoogleNet_V3结构(论文复现)
- C# WebBrowser控件使用整理
- 程序员们平时常逛的论坛
- 社区养老管理系统开发满足老年人多样化、多层次的需求
- 这几个小工具也太好用了
- Excel 函数大全
- 你们要的网络电话软件测评来了
- git tracked branch
- form-making爬坑笔记(jeecg项目替换表单设计器)
- 为什么外包公司这么不受欢迎 ?
- 跟想这台计算机usb无法识别,跟这台计算机连接的前一个usb设备工作不正常,windows 无法识别它。 这是怎么回事急!!...
- Python数据分析之Pandas库