欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Unity3D中构建3D模拟,第3部分

程序员文章站 2023-12-27 07:58:33
...

欢迎来到这个由三部分组成的关于Unity 3D的博客系列的最后一篇文章。 在本系列中,我们将在Unity3D中使用丰富的控件创建一个简单的3D游戏。 第一部分介绍了如何设置Unity3D ,第二部分介绍了如何 使用C#控制Unity3D

在本系列的最后一篇文章中,我们将深入研究如何使用Unity3D将代码实际制作成一个简单的游戏。

让我们开始吧

让我们建立一些关卡,进行更多类似游戏的动作和最终目标。

首先,让我们添加一些要坚持的世界墙。 为此,我们将添加一堆多维数据集,并使用以前的实践来将它们缩放和定位。

让我们转到Unity编辑器中的“场景视图”。 单击“层次结构视图”(未选择任何内容),然后创建另一个空对象。 清除其变换(0,0,0),然后将此对象命名为“世界”。

在Unity3D中构建3D模拟,第3部分

然后,我们要清除一些不再需要的旧对象。 让我们删除为测试添加的白色立方体和球体。

在Unity3D中构建3D模拟,第3部分

现在,选择“ World对象”,让我们添加一个多维数据集。 然后,将其位置和比例尺值更改为相等的位置0、2.5、0和比例尺10、5、1。这将使我们的墙长10个单位,高5个单位,宽1个单位。

在Unity3D中构建3D模拟,第3部分

现在,让我们的场景摄像机定位为具有自顶向下的视图。 单击“场景视图”右上角的绿色Y。

在Unity3D中构建3D模拟,第3部分

在Unity3D中构建3D模拟,第3部分

现在将墙旋转90度并将位置设置为-5、2.5、5。

在Unity3D中构建3D模拟,第3部分

然后让我们添加一堵墙的副本。 右键单击它,复制,然后将其X位置设置为5。

在Unity3D中构建3D模拟,第3部分

选择我们拥有的两堵墙,然后再次复制它们。 选中这两个选项后,我们将其Z位置值设为15。

在Unity3D中构建3D模拟,第3部分

仍然选择它们,再次复制,并将它们移到Z位置25和X位置-10。

接下来,我们将使用一个新工具将它们一起旋转。 在右上角有一组5个按钮。 我们将选择中间按钮,然后将Y旋转设置为0。

在Unity3D中构建3D模拟,第3部分

在Unity3D中构建3D模拟,第3部分

然后,我们将选择Wall(4)使其比例尺X比例尺30变长。

在Unity3D中构建3D模拟,第3部分

然后选择Wall(2)并将其比例X也设置为30。

在Unity3D中构建3D模拟,第3部分

然后选择Wall和Wall(3),复制它们,并将复制品设置为X位置-15。

在Unity3D中构建3D模拟,第3部分

然后选择Wall(2),复制它,并将其X位置设置为-25。

在Unity3D中构建3D模拟,第3部分

现在,使我们的速度与本课程更加友好。

在“层次结构视图”中选择“ Player对象,然后在检查器编辑器中编辑值“前进速度”和“旋转速度”。 我喜欢5代表前进,50代表转向。

在Unity3D中构建3D模拟,第3部分

现在让我们为游戏添加一个目标。 让我们添加一个具有碰撞器的区域,该碰撞器在越过终点线时触发。

首先让我们添加完成区域。 我们将使用另一个多维数据集来设置边界。 在没有选择任何内容的层次结构视图中,通过右键单击3D对象->多维数据集添加多维数据集。 我们将其命名为Finish,将其位置设置为-10、2.5、15,并将其比例设置为5、5、5。

在Unity3D中构建3D模拟,第3部分

接下来,让我们给它新的材料。 在“资源”窗口中右键单击,然后单击创建->材质。 让我们将其Albedo设置为00B6006B,然后将其渲染模式更改为“透明”。 这使其绘制透明。

在Unity3D中构建3D模拟,第3部分

然后,我们需要编辑Finish Cube Collider 而不是添加到物理上,我们希望它禁用碰撞并仅触发。 我们通过选择Finish对象来Finish此操作,然后在Box Collider下的Inspector中,选中“ Is Trigger”。 这将使引擎触发OnTrigger方法。

在Unity3D中构建3D模拟,第3部分

然后,将脚本添加到Finish对象中,以控制完成时发生的情况。 我们将其FinishController ,然后在MonoDevelop FinishController其打开。 然后,我们添加一个新函数,然后在输入对象时进行记录。

void OnTriggerEnter(Collider collider){
	Debug.Log( “Finished” );
}

在Unity3D中构建3D模拟,第3部分

现在按播放。 我们应该能够环游世界并找到Finish立方体。 进入多维数据集后,我们应该能够打开控制台窗口并看到消息“ Finished”。

在Unity3D中构建3D模拟,第3部分

在Unity3D中构建3D模拟,第3部分

现在,将其设置为在显示屏上显示一条消息以向用户显示,而不是仅记录该消息。 我们将说他们完成了游戏,然后添加了一个按钮以重新启动游戏。

首先,我们需要将Text对象添加到我们的世界中。 转到“层次结构视图”,右键单击,然后单击“ UI =>文本”。 这将为我们的场景增加三件事:一是应在摄像机视口中显示的文本对象,二是Canvas(即GUI后面的设置和层次结构),三是EventSystem ,该事件系统可以引发和捕获事件GUI就像拖放一样。

在Unity3D中构建3D模拟,第3部分

在“场景视图”中很难处理文本,因此让我们切换到“游戏视图”。

在Unity3D中构建3D模拟,第3部分

现在,我们应该可以在右下角看到“新文本”字段。 让我们在层次结构视图中选择Text对象。 在检查器中,我们可以编辑文本。 将其位置设置为0、0、0,将宽度设置为500,将高度设置为500。将“文本”设置为“ You Finished”,格式为粗体,字体大小为80,颜色为红色。

在Unity3D中构建3D模拟,第3部分

现在,让我们打开FinishedController Script并添加一些代码。 我们首先需要能够访问UI库。 因此,在脚本的顶部,我们需要使用UnityEngine.UI进行添加,然后添加一个public Text finishedText UnityEngine.UI ,以便可以访问我们的text元素。

在Unity3D中构建3D模拟,第3部分

现在回到编辑器。 让我们单击“完成”多维数据集对象,然后将“文本”对象拖到脚本的“完成文本”字段中。

在Unity3D中构建3D模拟,第3部分

现在,我们可以访问text元素。 要设置我们的文本,让我们在FinishedController > Start function finishedText.text = “”编写; 从某种意义上讲,这将在我们运行游戏时通过将文本保留为空白来隐藏文本。

在Unity3D中构建3D模拟,第3部分

现在,让我们OnTriggerEnter函数,并添加代码以在文本中写上“ You Finished”。

在Unity3D中构建3D模拟,第3部分

现在按播放。 我们应该看到文本在游戏开始时就消失了。 一旦找到饰面并跨入多维数据集,它将为您提供完成的文字。

在Unity3D中构建3D模拟,第3部分

在Unity3D中构建3D模拟,第3部分

现在让我们做与文本相同的操作,但是这次添加一个按钮。 选择按钮,然后在检查器中,更改文本以重新启动游戏。 让我们将其保留在默认位置。

在Unity3D中构建3D模拟,第3部分

现在,让我们转到FinishController并添加另一个公共UI元素public button restartButton

在Unity3D中构建3D模拟,第3部分

然后返回到“完成”对象的检查器。 让我们将按钮拖动到restartbutton

在Unity3D中构建3D模拟,第3部分

让我们在启动函数中添加一些代码。 我们将希望隐藏代码,以使我们无法一直看到它,还需要重置一些代码。 首先,我们可以添加restartButton.gameObject.SetActive(false)隐藏,这将隐藏游戏对象。 然后在OnTriggerEnter我们需要使用restartButton.gameObject.SetActive(true);将其反转restartButton.gameObject.SetActive(true);

在Unity3D中构建3D模拟,第3部分

然后在FinishController ,添加一个名为RestartGame()的公共void函数。 这将是我们在按钮on click控制器中调用的函数。 同样在函数中,我们添加代码以在按下场景时重新加载场景,使用UnityEngine.SceneManagement;在文件顶部添加另一个using语句UnityEngine.SceneManagement; 然后,将代码添加到RestartGame Function SceneManager.LoadScene(“Main Scene”); 它必须是您在字符串中调用场景的名称,否则它将更改您的场景,而不是重新加载它( Main.Scene )。

在Unity3D中构建3D模拟,第3部分

现在,我们可以转到“层次结构视图”并选择“按钮”对象。 在检查器中,底部有一个On Click Controller ”。 我们只想单击+号并添加一个新的运行时。 然后,将Finish游戏对象拖到下拉列表中,单击no函数,然后选择FinishController => RestartGame

在Unity3D中构建3D模拟,第3部分

在Unity3D中构建3D模拟,第3部分

现在玩吧。

您现在应该可以玩到游戏结束。 触发完成后,您应该会看到“您已完成”和“重新启动游戏”按钮的消息。 如果您单击“重新启动游戏”按钮,它应该允许您再次播放。

在Unity3D中构建3D模拟,第3部分

包起来

结束!

现在,您应该能够在带有丰富控件的Unity3D中创建一个简单的3D游戏或应用程序。 请留下您的任何评论或问题。 谢谢阅读!

翻译自: https://www.javacodegeeks.com/2016/08/building-3d-simulations-unity3d-part-3.html

上一篇:

下一篇: