Unity3d之坦克大战(二)

3D坦克大战 Unity学习记录 阅读详情

Unity3d之坦克大战(二)



这只是一个非常非常初级的教程。在 Unity3d之真机测试(上)我们创建了一个初级的坦克,今天继续坦克大战的游戏。下面开始吧:



1.

首先我们要创建一个炮弹。打开3DS Max,为了简单,就画一个胶囊好了。在右边栏的扩展几何体中选择胶囊。然后选中工具栏的移动工具,将胶囊移动(0,0)处,如下所示:




并保存为tankBullet.max,同时导出为tankBullet.3DS:






2.

将tankBullet.3DS放到Assets目录下,unity3d会自动导入。把它托入到Scene窗口中,并调整到合适位置和大小,如下所示:





3.

我们只是拖入了一个材质,下面需要创建对应的Entity。选择GameObject-->Create Other-->Cube 创建一个Cube,并调整到合适位置和大小。同时将第二步创建的tankBullet材质拖到Cube中,是它们成为一体。为了清晰,我们把Cube重命名成tankBulletCube。完成后结果如下:





4.

给tankBulletCube增加物理感应。选中tankBulletCube,选择Component-->Physics-->Rigidbody。



5.

玩家按下空格键的时候发射导弹。我们用创建的导弹做Prefab(Prefab是大量重复的小Entity):

首先在Project窗口中创建一个Prefab文件夹,然后右击,选择Create-->Prefab,输入名称tankBulletPrefab,如下所示:




可以看到,一开始tankBulletPrefab前的图标是灰的:




把我们创建的tankBulletCube拖动到tankBulletPrefab中就会看到,图标变成蓝色的了:





6.

下面我们在Scripts文件夹下新建一个tankBulletFire.js脚本,用来控制导弹的发射,如下:

var FirePoint:Transform;
var Bullet:Rigidbody;

function Update ()
{
	if(Input.GetKeyDown(KeyCode.Space))
	{
		var clone : Rigidbody;
		clone = Instantiate(Bullet, FirePoint.position, FirePoint.rotation);
		clone.velocity = transform.TransformDirection(Vector3.forward * 100);
	}
}

代码中有两个变量:FirePoint和Bullet。前者是发射炮弹的起点,后者则是实际的炮弹。如果玩家按下空格,则我们在FirePoint的地方实例化一个Bullet,并设置它向前运动。




7.

下面我们创建发射炮弹的起点。选择GameObject-->Create Empty,并命名为FirePoint。同时将它的位置调整到坦克炮口前方(离炮口必须有一点距离,否则由于坦克和炮弹都是Rigidbody,一发射就会碰撞),同时还要把它加入到坦克Cube中。完成后如下所示:





8.

将tankBulletFire.js脚本拖动到Cube,注意到此时FirePoint和Bullet还是None的:



把FirePoint和tankBulletPrefab分别拖动到FirePoint和Bullet的,完成后如下所示:





9.

下面运行游戏,按下空格键,我们的炮弹就发射出来了(下图的小白点),同时注意到Hierarchy窗口中会出现大量的tankBulletPrefab:





10.

炮弹发射后应该会有白光。选择GameObject-->Create Other-->Particle System创建例子系统,并命名为tankBulletParticleSystem,调整大小和数量,如下所示:





11.

把tankBulletParticleSystem加入到tankBulletCube中。再次运行程序,我们的炮弹是不是漂亮很多了,哈哈:





12.

我们需要在炮弹打到物体或飞行一段距离后自动销毁。

新建一个tankBulletDestroy.js脚本,输入:

function OnCollisionStay(collisionInfo : Collision)
{
	//yield WaitForSeconds(2.0);  //等待2秒
	Destroy(gameObject);
}

OnCollisionStay这个函数会在物体发生碰撞后被调用。我们在碰撞后立即销毁。哈哈,测试一下。




13.

是不是单调了点?我们给发射导弹加上音效吧:

在Project窗口新加一个Audio文件夹,拖入声音文件,如下所示:






14.

给坦克Cube加入一个Audio Source。选择坦克Cube,选择GameObject-->Create Empty,命名为tankBulletFireSound。选中它,选择Component-->Audio-->Audio Source,然后将声音文件拖入Audio Clip一栏,并把tankBulletFireSound加入坦克Cube中,同时注意去掉Play On Awake复选框(否则程序一开始就会发声):






15.

下面我们修改tankBulletFire.js脚本来加入声音的控制:

var FirePoint:Transform;
var Bullet:Rigidbody;
var tankBulletFireSound:AudioSource;

function Update ()
{
	if(Input.GetKeyDown(KeyCode.Space))
	{
		var clone : Rigidbody;
		clone = Instantiate(Bullet, FirePoint.position, FirePoint.rotation);
		clone.velocity = transform.TransformDirection(Vector3.forward * 100);
		tankBulletFireSound.Play();
	}
}


同时将坦克Cube的tankBulletFireSound拖入脚本的tankBulletFireSound变量中:





16.

测试一下,发射导弹时,是不是也有声音啦,哈哈~~








完成!

Unity游戏程序设计——3D双人坦克大战 字体:BowlbyOne-Regular,大小:50,文本格式选择居中显示,勾选Best Fit,Max Size:60, Color(255,255,255,255)。选中AimSlider设置Position(1,-9,-1 )2. 创建显示UI:右键创建UI/Cavas重命名为MessageCanvas,在Cavas下右键UI>Text创建Text文本组件,锚点选择Alt+最右下模式, 参数为(0,0,0,0,0)Anchors:Min(0.1,0.1),Max(0.9,0.9) 阅读详情

相关推荐

【Unity3D-Mirror多人坦克大战】坦克生成、移动和摄像机跟随(二)

坦克生成、移动和摄像机跟随

Lomiss的博客 2693

Unity3D坦克大战 源代码(3D).zip

Unity3D坦克大战 源代码(3D).zip

Unity3D项目之《坦克大战》

2016年2月4日11:00:27 Tank_Project_Log 新年之前,记录一下Unity3D项目之坦克大战游戏经过,迟迟到过完年才完成发布,实在实在拖延症太重。

向着苦逼的程序员努力 3万+

Unity3D坦克大战(附代码和原理讲解)

让摄像机一直跟随在玩家后上方,并且随玩家的旋转而旋转

iiiiiiimp的博客 7836

Unity3D坦克大战项目总结

在大体学习了Unity3D和c#语言后,这大概算是第一个全程做下来的小项目。 本篇文章不含代码,仅从每个部分的实现思路和体会提出一点分享。算是一个个人的总结。 当然也包括我在实现的过程中碰到的一些bug和处理。 制作前准备 创建新项目,导入素材包自不必说。这部分主要讲一下素材的处理和动画的制作。 先说说图片处理 Unity中的图像资源一般是由许多小图构成的图集,所以需要先将这些图片进行划分。划分可以使用PS等图片处理软件,但是作为一个刚入门的游戏程序,怎么可能有机会有人帮你处理图片呢?(枯了) 但是Uni

sagiri0506的博客 3623

Unity3D学习之(坦克大战解析)

欢迎大家光临我的博客!对坦克大战项目的解析:一、游戏模块主要是:注册模块、登录模块、我方模块、和敌方模块。①注册模块:可以跳转到登录界面!②登录模块:可以跳转到游戏界面!③我方模块:可以前后左右移动,可以发射子弹,可以死亡销毁。④敌方模块:可以可以发射子弹,追踪我方的位置,也可以随机出现,可以死亡销毁。 二、所用到的技术①键盘事件           //敌我双方通过键盘上下左右键的移动②位移  ...

Baron_Ldx的专栏 4157

Unity3D实现坦克大战

Enemy 游戏对象添加了刚体组件,并修改 Mass = 100,Drag = 0.5,AngularDrag = 0.1,Freeze Rotation 中勾选 X 和 Z。Player 游戏对象添加了刚体组件,并修改 Mass = 100,Drag = 1,AngularDrag = 0.1,Freeze Rotation 中勾选 X 和 Z。PlayerController 脚本组件挂在 Player 游戏对象上。EnemyController 脚本组件挂在 Enemy 游戏对象上。

benben044的专栏 2617

Unity3d实现双人网络坦克大战

2222

qq_36297981的博客 4079

Unity3d坦克大战(二)

这只是一个非常非常初级的教程。在 Unity3d之真机测试(上)我们创建了一个初级的坦克,今天继续坦克大战的游戏。下面开始吧: 1. 首先我们要创建一个炮弹。打开3DS Max,为了简单,就画一个胶囊好了。在右边栏的扩展几何体中选择胶囊。然后选中工具栏的移动工具,将胶囊移动(0,0)处,如下所示: 并保存为tankBullet.max,同时导出

薇薇的专栏 1655

unity坦克大战

坦克大战游戏简介开发流程场景搭建及其素材处理预制体的制作,2D动画的制作控制玩家的移动及其方向 游戏简介 个人的第一个小游戏demo,用Unity制作,任务:保卫家里的的目标人物,直到通关。 开发流程 场景搭建及其素材处理 主摄像机参数 素材处理 单张图转化成UI,设置成Single,雪碧图转化成UI,设置成Multiple,切割雪碧图,点击Sprite Editor 预制体的制作,2D动画的制作 将贴图直接放在Hierarchy面板下,调整大小,拖回Prafabs文件夹下,形成预制体。 简单2D动画的制

qq_41688700的博客 2281

unity3d 没有navMesh的AI坦克大战的实现

unity3d 没有navMesh的AI坦克大战的实现 AI坦克大战 1.游戏简介: > * 游戏目标:击毁地方基地。 > * AI行为: 1.拥有一定的视野范围。 2.若视野范围内出现敌方坦克,随机选择一个目标,旋转坦克机身,使坦克面朝目标并追踪敌方坦克。 3.目标进入攻击范围内,控制炮台瞄准目标并开火,击中率随机。 4.若视野范围内无任何敌方坦克

callMe坤仔的博客 2487

Unity3D 《坦克大战》案例源码过程

使用的是Unity 2018版和VS2019 创建新的工程,导入素材包,下面为链接: 链接:https://pan.baidu.com/s/1_KLjColSJVN123aLy4_4fw 提取码:o101 导入素材 先把相机的天空盒改为黑色,画面比例调为5:4还有长度改为8.5 这时候我们就会发现我们的游戏实景面板(左下角的窗口)已经变为黑色的了。 初步制作物体 接着我们要做游戏里的物体,我们打开Project面板Assets文件夹下的GameResource文件,下面有三个文件夹,从上到下分别是声音、字

m0_47605113的博客 9652

重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析

带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~

努力前行,总会成为自己心中的那道光 5万+

Unity3d 多人在线坦克大战源码

Unity3d 多人在线坦克大战源码 Unity精品小游戏源码 , Unity完整项目源码 是完整项目的压缩包,可直接运行,无需其他操作。 适合二次开发和学习使用,都是经典游戏,需要其他游戏源码包可以看我主页。 直接可以运行 , 如果运行不了 请切换编译器版本 有别的资源或代码需求可以通过我的主页联系 谢谢! Unity游戏代码 ,Unity经典游戏源码 , Unity休闲游戏源码, Unity容易上手的游戏源码,Unity小游戏源码,Unity新手练习源码,Unity个人开发源码,Unity优秀项目,Unity商店优秀作品。 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Unity3d 多人在线坦克大战源码 Uni

坦克大战素材文件和源代码

坦克大战素材文件和源代码 unity Unity3D 项目仅供参考

unity3d 坦克大战工程源码

自制练习使用,禁止转载,素材来源siki学院坦克大战,基本已经是完成版的坦克大战

Unity3D入门-坦克大战

Unity3D入门-坦克大战 文章目录Unity3D入门-坦克大战1.基础2.功能介绍3.部分代码4.展示5.打包发布6.未处理问题 1.基础 概念1:预制体PreFab 将一个GameObject制作成一个组件模板,用于批量套用。 向场景添加一个预制体时,会创建一个它的实例,可在不同场景或同一场景创建多个预制体的实例,当修改预制体的属性时,这些修改也应用在所有实例上。 概念2:碰撞器Box collider 两个碰撞的物体身上都要有碰撞器组件,其中至少有一个为刚体Rigidbody(最好是运动的一方) 原

qq_44646316的博客 3338

网络设备调试指南:如何用MDIO Clause22/45协议读写Marvell MV88E6390寄存器

本文深入解析了如何通过MDIO Clause 22/45协议对Marvell MV88E6390交换芯片进行寄存器读写调试。文章详细对比了两种协议的本质区别与适用场景,并重点阐述了MV88E6390的直接与间接寻址策略,提供了实战代码示例与关键调试技巧,帮助网络工程师高效解决配置与通信问题。

tequila的博客 519
上一篇: Unity3d之真机测试(下)
下一篇: unity3d之iPhone输入响应
htttw
博客等级 码龄18年 378粉丝 73原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值