如何用vs制作全民飞机大战战背景

苹果园为iOS用户提供和下载,最新的、、、等,分享最权威的资讯、、及解决办法,拥有最火爆的,苹果园一家专注解决iOS所求的网站。7841人阅读
[编程语言](120)
[Unity引擎](86)
[游戏开发](79)
& & & & 大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是。& & & & 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目。这是一个比较综合的项目,希望对大家学习Unity3D有所帮助,我会在文章最后给出项目代码。作为一个游戏而言,游戏策划十分重要,所以在开始今天的文章之前,我们先来了解下这个项目的策划。我们的玩家是一个飞机,玩家可以使用A、D、S、W四个键位来控制飞机位置,当按下空格键时,我方飞机可以向敌机发射炮弹,当敌机中弹后将减少生命值,当敌机生命值为0时,敌机将爆炸销毁。在游戏场景中只有一种从屏幕上方不断向下飞行的敌机,当我方飞机与敌机碰撞后,双方都将减少生命值。当我方生命值减少至0时,游戏将结束。好了,了解完游戏规则设定后,我们就可以开始今天的内容了。& & & && & 一、游戏场景& & & 游戏场景我们采用2D的界面,如图,我们创建一个蓝天白云的平面场景,该场景垂直于摄像机并采取正交投影方式。如果对在Unity3D中创建2D场景尚存在疑惑的朋友可以参考文章和两篇文章。& & & 我们这里在场景中添加GUIText对象来显示玩家得分等基本信息,脚本定义如下:using UnityE
using System.C
public class GameManager : MonoBehaviour {
//玩家得分
private Transform G
//玩家生命
private Transform HP;
//游戏结束
private Transform T
private GameObject P
void Start ()
//初始化界面
Grade=transform.Find(&Grade&);
HP=transform.Find(&HP&);
Text=transform.Find(&Text&);
Text.guiText.enabled=
//获取玩家对象
Player=GameObject.Find(&Player&);
void Update ()
if(Player!=null)
Grade.guiText.text=&得分:&+Player.GetComponent&Player&().Grade.ToString();
HP.guiText.text=&生命:&+Player.GetComponent&Player&().MaxHP.ToString();
if(HP.guiText.text==&生命:0&)
Text.guiText.enabled=
//立即复活
if(Input.GetKey(KeyCode.Y))
Application.LoadLevel(&Main&);
if(Input.GetKey(KeyCode.N))
Application.Quit();
& & & 二、玩家飞机& & & 玩家飞机的创建和背景的创建时相同的,这里我们不再多说。玩家飞机需要完成移动、发射、碰撞的事件处理。为此我们编写下面的脚本:using UnityE
using System.C
public class Player : MonoBehaviour {
//飞机的移动速度
public float MoveS
//飞机的最大生命值
public int MaxHP=100;
//定义子弹对象
public GameObject B
//定义子弹发射位置
private Transform BulletPosL;
private Transform BulletPosR;
[HideInInspector]
public int Grade=0;
void Start ()
BulletPosL=this.transform.Find(&BulletPosL&);
BulletPosR=this.transform.Find(&BulletPosR&);
void Update ()
if(Input.GetKey(KeyCode.A))
transform.Translate(Vector3.left*Time.deltaTime*(-MoveSpeed));
if(Input.GetKey(KeyCode.D))
transform.Translate(Vector3.left*Time.deltaTime* MoveSpeed );
if(Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward*Time.deltaTime*(-MoveSpeed));
if(Input.GetKey(KeyCode.S))
transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);
//按下空格键,发射子弹
if(Input.GetKey(KeyCode.Space))
Instantiate(Bullet,BulletPosL.transform.position,Quaternion.Euler(new Vector3(0,1,0)));
Instantiate(Bullet,BulletPosR.transform.position,Quaternion.identity);
#region 减血
public void Hit(int Value)
if(MaxHP&0)
Destroy(this.gameObject);
#endregion
#region 增加分数
public void Add(int Value)
#endregion
& & & &在这段代码中,Bullet是我们的子弹对象,它从飞机的两个子弹发射位置BulletPosL、BulletPosR发射,向屏幕上方按照一定的速度缓缓移动,当子弹与敌人碰撞时,子弹对象将销毁,同时敌人生命值减少。Bullet对象对应于我们的一个Prefab。BulletPosL、BulletPosR对应于飞机上的两个位置。如图:& & & 我们的子弹Bullet是一个绑定了脚本的Capsule。它的代码定义如下:using UnityE
using System.C
public class Bullet : MonoBehaviour {
//定义子弹的移动速度
public float MoveSpeed=10F;
//定义子弹的销毁时间
public float DestroyTime=2.0F;
//定义子弹对敌人的伤害值
public int Damage=2;
//玩家飞机
private GameObject P
void Start()
Player=GameObject.Find(&Player&);
void Update ()
//移动子弹
transform.Translate(Vector3.up * MoveSpeed * Time.deltaTime);
//碰撞事件捕捉
void OnTriggerEnter(Collider mCollider)
if(mCollider.gameObject.tag==&Enemy&)
//敌人减血
mCollider.gameObject.GetComponent&Enemy&().Hit(Damage);
//我方得分
Player.GetComponent&Player&().Add(1);
//销毁子弹
Destroy(this.gameObject);
//当离开摄像机范围时触发销毁事件
void OnBecameInvisible()
Destroy(this.gameObject);
& && &三、敌人飞机& &在我们的游戏中共有三种敌机,我们先将它们制作成预设。然后通过敌机生成器不断地生成敌机。如图:& & &和子弹相反,我们希望敌机从屏幕上方以一定速度向下移动,当碰到玩家飞机或者子弹时,将减少生命值。为此,我们这样定义敌机的脚本:using UnityE
using System.C
public class Enemy : MonoBehaviour {
//移动速度
public float MoveSpeed=1.5F;
public GameObject E
//最大生命值
public int MaxHP=100;
void Update ()
//移动飞机
transform.Translate(Vector3.forward*Time.deltaTime*MoveSpeed);
public void Hit(int Value)
//如血量不低于0,则敌人飞机掉血
if(MaxHP&0)
//产生爆炸效果
Instantiate(Explosion,transform.position,Quaternion.Euler(new Vector3(90,180,0)));
//销毁敌机
Destroy(this.gameObject);
void OnTriggerEnter(Collider mCollider)
//如果与玩家飞机遭遇,则双方减血
if(mCollider.gameObject.tag==&Player&)
//敌机掉血
this.Hit(2);
//玩家飞机掉血
Transform mPlayer=mCollider.gameObject.transform.Find(&Player&);
mPlayer.GetComponent&Player&().Hit(2);
void OnBecameInvisible()
Destroy(this.gameObject);
& & & 接下来,我们通过敌机生成器来不断地生成敌机。敌人生成器是我们预制在游戏场景中的空游戏体,它位于游戏场景的顶部。我们将下面的脚本绑定到游戏生成器 上,使其可以不断地生成敌人:using UnityE
using System.C
public class SpawnEnemy : MonoBehaviour {
//定义敌人速度
public float SpawnTime=1.0f;
//定义敌人对象数组
public GameObject[] E
void Start ()
StartCoroutine(&Spawn&);
//通过迭代器生成敌人
IEnumerator Spawn()
yield return new WaitForSeconds(SpawnTime);
//克隆对象
Instantiate(Enemys[Random.Range(0,3)],new Vector3(transform.position.x * Random.Range(-1F,1F),
transform.position.y,-4),Quaternion.Euler(new Vector3(90,180,0)));
StartCoroutine(&Spawn&);
& & & 其中Enemys对应到我们的敌人预设,每隔一段时间,我们随机地产生一种敌人,该敌人将从屏幕上方缓缓向下移动。& & &&& & 四、碰撞检测& &&在这个游戏中,主要存在子弹与敌机的碰撞、玩家飞机与敌机的碰撞两种形式。它们分别被定义在Bullet.cs和Enemy.cs两个类文件中。//碰撞事件捕捉
void OnTriggerEnter(Collider mCollider)
if(mCollider.gameObject.tag==&Enemy&)
//敌人减血
mCollider.gameObject.GetComponent&Enemy&().Hit(Damage);
//我方得分
Player.GetComponent&Player&().Add(1);
//销毁子弹
Destroy(this.gameObject);
}void OnTriggerEnter(Collider mCollider)
//如果与玩家飞机遭遇,则双方减血
if(mCollider.gameObject.tag==&Player&)
//敌机掉血
this.Hit(2);
//玩家飞机掉血
Transform mPlayer=mCollider.gameObject.transform.Find(&Player&);
mPlayer.GetComponent&Player&().Hit(2);
}& & && & &五、爆炸特效& & &当敌机被摧毁时,将显示爆炸特效,我们这里采用一组2D贴图来实现爆炸特效,原理是改变贴图的mainTextureScale和mainTextureOffset两个属性值。我们来一起看代码:using UnityE
using System.C
public class Explosion : MonoBehaviour {
//动画序列索引
private int index=0;
private AudioSource mA
void Start()
mAudio=GetComponent&AudioSource&();
void FixedUpdate ()
if(index&8)
this.renderer.sharedMaterial.mainTextureScale=new Vector2(1.0F/8,1);
this.renderer.sharedMaterial.mainTextureOffset=new Vector2(index * 1.0F/8,0);
mAudio.Play();
Destroy(this.gameObject);
& & &其中mAudio对应到一个AudioSource组件,我们在这里指定一个爆炸的音效。同样地,我们将爆炸制作成预设,该预设对应于Enemy.cs中的Explosion。& & &好了,到这里今天的&内容就讲解完了,我们一起来看看最终的效果吧!& & &希望今天的内容大家能够喜欢。学了这么长时间的Unity3D,感慨还是挺多的,很多东西你不努力去做,是永远做不好的,你不给自己压力,你不会知道自己有多优秀。本项目源代码可以从下载。& & &每日箴言:&不管活到什么岁数,总有太多思索、烦恼与迷惘。一个人如果失去这些,安于现状,才是真正意义上的青春的完结。—— &渡边淳一& & & 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei& & & 转载请注明出处,本文作者:秦元培,本文出处:http://blog.csdn.net/qinyuanpei/article/details/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:930455次
积分:11655
积分:11655
排名:第1012名
原创:189篇
评论:1169条
秦元培,程序员、游戏开发者
(1)(3)(2)(5)(1)(4)(2)(5)(4)(1)(5)(4)(2)(1)(5)(4)(1)(7)(13)(1)(2)(1)(9)(8)(2)(5)(9)(23)(8)(13)(18)(7)(1)(1)(2)(1)(1)(1)(2)(1)(3)(1)对于全民飞机大战2016年的总结和2017年的展望。
Copyright@ Tencent. All Rights Reserved
腾讯公司 版权所有WIndows VS下的飞机大战源码,全部工程文件,VS2015打开可以看到效果 Shot Game 射击游戏 256万源代码下载-
&文件名称: WIndows& & [
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 13626 KB
&&上传时间:
&&下载次数: 0
&&提 供 者:
&详细说明:VS下的飞机大战源码,全部工程文件,VS2015打开可以看到效果-World War II aircraft source VS under all project files, VS2015 open can see the effect
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&WIndows游戏开发-飞机大战&&........................\.vs&&........................\...\WIndows游戏开发-飞机大战&&........................\...\........................\v14&&........................\...\........................\...\.suo&&........................\01-Windows窗口的创建&&........................\....................\01-Windows窗口的创建.vcxproj&&........................\....................\01-Windows窗口的创建.vcxproj.filters&&........................\....................\Debug&&........................\....................\.....\01-Windows窗口的创建.log&&........................\....................\.....\01-Windows窗口的创建.tlog&&........................\....................\.....\.........................\01-Windows窗口的创建.lastbuildstate&&........................\....................\.....\.........................\CL.read.1.tlog&&........................\....................\.....\.........................\CL.write.1.tlog&&........................\....................\.....\.........................\link.read.1.tlog&&........................\....................\.....\.........................\link.write.1.tlog&&........................\....................\.....\GameMain.obj&&........................\....................\.....\vc140.idb&&........................\....................\.....\vc140.pdb&&........................\....................\GameMain.cpp&&........................\....................\image&&........................\....................\.....\background.bmp&&........................\....................\.....\bullet1.bmp&&........................\....................\.....\enemy0.bmp&&........................\....................\.....\enemy1.bmp&&........................\....................\.....\enemy2.bmp&&........................\....................\.....\enemy3.bmp&&........................\....................\.....\enemy4.bmp&&........................\....................\.....\game_loading.bmp&&........................\....................\.....\gameover.bmp&&........................\....................\.....\hero1.bmp&&........................\....................\.....\hero2.bmp&&........................\....................\.....\icon.ico&&........................\....................\.....\title.bmp&&........................\Debug&&........................\.....\01-Windows窗口的创建.exe&&........................\.....\01-Windows窗口的创建.ilk&&........................\.....\01-Windows窗口的创建.pdb&&........................\.....\飞机大战.exe&&........................\.....\飞机大战.ilk&&........................\.....\飞机大战.pdb&&........................\WIndows游戏开发-飞机大战.sdf&&........................\WIndows游戏开发-飞机大战.sln&&........................\请关注siki的微信公众号 devsiki 接收最新视频 开发资源和文章信息_400x400.jpg&&........................\飞机大战&&........................\........\Debug&&........................\........\.....\GameMain.obj&&........................\........\.....\vc140.idb&&........................\........\.....\vc140.pdb&&........................\........\.....\飞机大战.log&&........................\........\.....\飞机大战.tlog&&........................\........\.....\.............\CL.read.1.tlog&&........................\........\.....\.............\CL.write.1.tlog&&........................\........\.....\.............\link.read.1.tlog&&........................\........\.....\.............\link.write.1.tlog&&........................\........\.....\.............\飞机大战.lastbuildstate&&........................\........\GameMain.cpp&&........................\........\image&&........................\........\.....\background.bmp&&........................\........\.....\bullet1.bmp&&........................\........\.....\enemy0.bmp&&........................\........\.....\enemy1.bmp&&........................\........\.....\enemy2.bmp&&........................\........\.....\enemy3.bmp&&........................\........\.....\enemy4.bmp&&........................\........\.....\game_loading.bmp&&........................\........\.....\gameover.bmp&&........................\........\.....\hero1.bmp&&........................\........\.....\hero2.bmp&&........................\........\.....\icon.ico&&........................\........\.....\title.bmp&&........................\........\sound&&........................\........\.....\achievement.wav&&........................\........\.....\big_spaceship_flying.wav&&........................\........\.....\bullet.wav&&........................\........\.....\button.wav&&........................\........\.....\enemy0_down.wav&&........................\........\.....\enemy1_down.wav&&........................\........\.....\enemy2_down.wav&&........................\........\.....\game_music.wav&&........................\........\.....\game_over.wav&&........................\........\.....\get_bomb.wav&&........................\........\.....\get_double_laser.wav&&........................\........\.....\out_porp.wav&&........................\........\.....\use_bomb.wav&&........................\........\飞机大战.vcxproj&&........................\........\飞机大战.vcxproj.filters
&输入关键字,在本站256万海量源码库中尽情搜索:}

我要回帖

更多关于 全民飞机大战官网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信