首页 资讯 硬件 视频 视界娱乐 开发者中心 论坛

简单类塔防变成VR塔防类游戏

36评论 分享:QQ 微信 微博
Date:2016-09-02 09:43 来源: 未知
摘要:开始利用unity制作 TowerDenfense小游戏,然后转换成VR类的游戏。


1.准备工作 :unity5.3.x版本;下载VR_TowerDenfense打包好的unity包;就是准备Oclous的runtime DK2的配置安装完毕或者任何其他VR眼镜设备如Google Cardboard SDK。

2.开始利用unity制作 TowerDenfense小游戏,简单制作一下场景,Assets/Materials/WispySkybox拉入场景添加天空材质,再用Prefabs/Environment、Tree1、Tree2、Tree3,和Models里的Tower 放入场景里搭建场景,把MainCamera放入Tower里面而且重置坐标位xyz全部归零之后把摄像头的Y轴往上拉拉倒塔尖位置。创建一个空物体更名为WORLD把场景里除了粒子特效“Stone_BulletImpact”放出WORLD里面并使它变为静态。





下一步,利用Scripts/CameraEditorControl、ShootingScript,挂载到摄像机上,CameraEditorControl是在编辑状态下移动鼠标摄像头旋转,ShootingScript是射击脚本利用鼠标左键射击用来测试,利用场景里的Bullet粒子特效挂载到脚本上,再给摄像机添加AudioSource,给射击添加声音。注意要把Play On Awake 取消掉不要一开始就播放。



下一步我们需要unity的自寻的功能”Navigation”,我们点击Bake自动生成路线。




之后创建空物体”Rpoint”作为生成敌人TANK的地点,之后把Assets/Prefab/Tank添加属性首先添加New Mesh Agent 寻路元件,再添加Rigidbody刚体给它,最后添加EnemyNavigation脚本。



重生点要指定好位置然后添加脚本”SpawnScript” SpawnInterval为重生时间设定。



下面该做如何打掉TANK,在ShootingScript里利用的是射线碰撞

//如果是敌人就消灭物件

if (rayHit.transform.tag == "Enemy")

Destroy(rayHit.transform.gameObject);

判断是利用的tag标签判定,所以我们要给预制体TANK加上一个新的标签叫Enemy,用的是碰撞那就必须要有碰撞盒,如果你不知道碰撞盒的大小是否合适,可以拉入场景一个预制体取消掉它的模型材质在进行碰撞盒的调节。

我们要做Tower的血量,我们需要给Tower加碰撞盒,我们需要把TowerHealth的脚本挂载在Tower身上。

//如果沒血了

if(currentLives <= 0)

{

//死亡重生3秒

alive = false;

            if (damageImage)

            {

                Color col = damageImage.color;

                col.a = 1f;

                damageImage.color = col;

            }




如果没血我们会在摄像机前面显示一个红色的画面,所以我们需要在场景里添加UI Image

我们需要死亡利用红色覆盖整个摄像头。



而一开始我们不需要上来就是红色我们需要把它的Alpha通道调零最后把IMAGE拖到TOWER下面的脚本,整个游戏已经做完了。



3.最后我们要把游戏改为VR游戏

首先我们先要把Unity3d里的PlayerSetting下的Virtual Reality Supported勾上,虚拟现实支持。


如果我们用最常见的Oclous的化我们只需要官网下载Oclous runtime dk2 就可以了因为unity5x版本已经非常便当化了 非常的方便。

如果我们要GOOGLE VR 需要去官网下载 unitypackage的资源包。下载完成后我们需要在GOOGLEVR导出StereoControll脚本挂载上摄像机上。



这样在安卓或者IOS手机上输出会变成以上图片,但在UNITY编辑下添加完脚本之后已经获得摄像头的控制权,我们不可以鼠标随便移动,我们需要ALT+鼠标可以移动,但我们会发现没有发现准信无法瞄准射击,所以我们需要导入一个准心,在GoogleVR/Prefabs/UI/GvrReticle挂载给摄像头,调成红色。


最后要导入手机上 用VR玩的话 我们需要自动射击,可以将ShootingScript 的备注自动射=O击的取消注释,把备注自动射击=X加上注释即可完事。



资源链接: