我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>应用>技术动态>技术应用

如何使用Unity制作2.5D游戏系列教程(四)

文章来源:网络 作者:bonnie 发布时间:2013年09月18日 点击数: 字号:

再次回到Unity:从“项目”面板中的“分类”文件夹将“GameOverClass”脚本拖到“主摄像机”中。

现在我们只要选择“File/Build Settings”并在弹出窗口中点击“添加current”按钮,关闭窗口,便能够将这一场景整合到项目中。

同时让我们快速添加“你输了”场景!与之前一样,创建一个“新场景”,然后“保存场景”并在场景文件夹中将其重命名为“LooseScene”。

选择“等级“中的“主摄像机”并设置:位置为(0,0,0),投射为“直线”,规格为“10”,近距离为“0.5”,远距离为“22”。打开菜单中的“GameObject/Create Other/Directional Light”并在检查器中设置:位置为(0,0,0)。再选择菜单中的“GameObject/Create Other/Plane”然后在检查器中设置位置为(0,0,8),旋转为(90,180,0),缩放为(3,1,2)。

下载“你输了”影像并将其保存在磁盘中:

为了完成场景设置,我们需要像之前那样进行以下几个步骤:

将“gameover_youlose.png”拖到“纹理”文件夹的“项目”面板中。

在“项目”中选择“gameover_youlose”纹理,然后在“检查器”中找到“格式”并将其改为“16bits”,并点击“运用”。

从“项目”面板中将“gameover_youlose”拖到“等级”中的“飞机”。

从“项目”面板中的“分类”文件夹将“GameOverClass”拖到“主摄像机”中。

在主菜单中选择“File/Build Settings”并在弹出窗口点击“添加current”按钮,关闭窗口。

在这里你拥有3个场景,而你需要将它们连接起来!

通过在“项目”面板中双击“LevelScene”加载LevelScene场景。切换到MonoDevelop并打开PlayerClass.cs。我们将修改updateScoreBy函数以检查玩家的分数是否超过3分或者低于3分。

//replace the updateScoreBy method with this code
public void updateScoreBy(int deltaScore) {
PlayerClass.score += deltaScore;
if (PlayerClass.score>3) {
Application.LoadLevel(“WinScene”);
} else if (PlayerClass.score<-3) {
Application.LoadLevel(“LooseScene”);
}
}

现在我们便将场景流程设置好了。你可以在Unity中点击播放进行观看。当然了,你也可以点击“File/Build&Run”或者在弹出的Xcode中点击“运行”,甚至你也可以在自己的iPhone上尝试这款游戏了。

最后!2.5D的尝试

是时候该上重头戏了,也就是这系列教程中最关键的部分——2.5D!

而我们将在此添加一些内容让你能够创造出一款接近于3d的游戏。

迄今为止我们都将摄像机的投射设置为“正交”,但是如此会让场景看起来就像是平面的2D游戏,所以让我们停止这么做!

在你的LevelScene场景中选择“主摄像机”,并在检查器中将投射变为“透视”,而“视野”为“100”(以弥补透视)。现在你便可以点击播放按钮观看你的2.5D游戏了!很酷吧!

但是我们的工作还未结束。

我们希望游戏能够变得更加复杂,并演示出摄像机的旋转与移动,每次当玩家分数提高时我们将会基于一个圆弧路径去移动摄像机,并改变其视角。根据这一理念,玩家如果更加深入游戏,便能够以一种更加奇特的视角去看待游戏世界并尝试着炸毁鲨鱼。

切换到MonoDevelop并改变PlayerClass.cs函数:

//add the properties
public GameObject mainCamera;
public GameObject gameBackground;
public float nextZ = 0;
//at the end of the updateScoreBy method
if (PlayerClass.score>0) {
nextZ = PlayerClass.score*2.5f;
}
//at the end of the Update method
if (nextZ > mainCamera.transform.position.z) {
mainCamera.gameObject.transform.Translate(
3* Mathf.Sin(transform.position.z/2 ) * Time.deltaTime,
0,
-Mathf.Sin(transform.position.z /2 ) * Time.deltaTime *0.3f
);
mainCamera.gameObject.transform.RotateAroundLocal( Vector3.up, Time.deltaTime*0.1f );
gameBackground.gameObject.transform.RotateAroundLocal( Vector3.up, Time.deltaTime*0.1f );
}

虽然看起来是密密麻麻的代码,但是却都是我们所需要的内容。让我们一点一点理解这些内容。

首先我们需要明确主摄像机和背景飞机的属性。我们将移动并旋转摄像机,同时我们也将旋转背景。

摄像机将从当前的Z轴0点的位置移向7.5Z的位置。所以当玩家每次获得分数时Z轴的设置将被设定为2.5,5.0然后7.5(如此上升)——从这些数值中我们可以看到,主摄像机的视角将转变成反正弦函数中的弧形。

>>相关产品

  • 立体显示器
  • 立体投影系统
  • 立体拍摄系统
  • 数字头盔/头戴式显示器
  • 立体视频眼镜
  • 液晶快门立体眼镜
  • 手持式立体双目镜
  • 数据手套
  • 3D输入设备
  • 多点触控系统
  • 立体投影系统
  • 动作捕捉系统
  • 位置追踪器
  • 眼动仪
  • 力反馈设备
  • 3D扫描器
  • 3D打印机
  • 虚拟现实软件
    • 暂无资料
    • 暂无资料
    • 暂无资料
    • 暂无资料
    • 暂无资料