Unity3D入门Demo-Cube移动-触发球体-切换场景

2023-10-29

新建Unity3D项目–选择3D类型

在 Hierarchy面板下,单击鼠标右键,选择 UI–>Button

创建一个按钮,会自动创建Canvas

调整Button的位置到屏幕正中间,修改Text文字为 “开始游戏”

同样的操作方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes。
如下图
在这里插入图片描述

编写场景切换脚本ChangeScenes

在Project面板 Assets目录下右键 新建文件夹,BasicCubeGame,然后再其下面再新建两个文件夹分别命名为Scenes和Scripts.
在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
修改名称为ChangeScenes.cs
双击打开脚本,VS2017将会启动,需要等待一段时间
编写以下脚本


using UnityEngine;
using UnityEngine.SceneManagement;
public class ChangeScenes : MonoBehaviour {

    //需要切换的场景英文名称
    public string sceneName;
	
    public void GoToNextScene()
    {
        //切换场景的方法
        SceneManager.LoadScene(sceneName);
    }
    
}

代码很简单,就是一个场景切换的功能,由外部传入需要切换的场景名称:

添加场景切换脚本到游戏物体并保存Menu场景

返回Unity3D编辑器界面,将在Project面板刚才写好的ChangeScenes文件,按住不动拖放到Hierarchy 面板下的ChangeScenes游戏物体上,如图
在这里插入图片描述
如果拖放成功,点击Hierarchy 面板下ChangeScenes游戏 物体,可以看到如下图
在这里插入图片描述

将SceneName变量名称修改为Game

保存当前场景,选择编辑器左上角的File–>SaveScene 选择保存到,刚刚新建的BasicCubeGame–>Scenes目录下,,命名为Menu

新建Game游戏主场景,并添加方块和两个球体

选择编辑器左上角的File–>New Scene 新建一个场景
在Hierarchy 面板下,右键新建一个Cube ,具体操作右键选择3D Object --> Cube
同样的方法再新建两个球体,具体操作右键选择3D Object --> Sphere 连续操作两次
选中Cube,将其坐标设置为Transform–>Position设置为 0,0,0
选中Cube,添加刚体组件,操作方法如图(先要选中Cube)
在这里插入图片描述

修改Rigidbody组件,勾选IsKinematic
修改BoxCollider组件,勾选IsTrigger
如下图
在这里插入图片描述


将两个球体的名称分别修改为SphereLose和SphereWin
分别设置SphereLose的坐标Transform–>Position设置为 -4,2,0
设置SphereWin的坐标为Transform–>Position设置为 2,5,0
设置SphereWin的坐标为Transform–>Scale设置为 2,2,2 (即将其大小放大一倍)

修改摄像机Main Camera的坐标为Transform–>Position设置为 0,3,-10
将摄像机的Clear Flags参数修改为 Solid Color ,如下图(截图不完整,摄像机的Z坐标为-10 ,不是-1)
在这里插入图片描述
在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上

编写Cube移动脚本MoveCube

在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
修改名称为MoveCube.cs
双击打开脚本,VS2017将会启动,需要等待一段时间
编写以下脚本


using UnityEngine;

public class MoveCube : MonoBehaviour {

    //移动速度
    public float speed;
  
	void Update () {
        Move();
        PosCheck();
    }

    //移动代码
    void Move()
    {
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) //上移
        {
            transform.Translate(Vector3.up * speed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) //下移
        {
            transform.Translate(Vector3.down * speed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) //左移
        {
            transform.Translate(Vector3.left * speed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) //右移
        {
            transform.Translate(Vector3.right * speed * Time.deltaTime);
        }
  
    }


    //防止移动出了屏幕之外
    void PosCheck()
    {
        float xpos = transform.position.x;
        float ypos = transform.position.y;

        if(xpos >4 || xpos < -4  || ypos >6|| ypos < -6)
        {
            transform.position = new Vector3(0, 0, 0);
        }

    }

}

将在Project面板刚才写好的MoveCube文件,按住不动拖放到Hierarchy 面板下的Cube游戏物体上,随后选中Cube文件,修改Speed为3
在这里插入图片描述

编写Cube触发球体脚本TriggerEnter

在Scripts文件夹下右键选择新建一个脚本,选择Create–>C# Script
修改名称为TriggerEnter.cs
双击打开脚本,VS2017将会启动,需要等待一段时间
编写以下脚本


using UnityEngine;
using UnityEngine.SceneManagement;
public class TriggerEnter : MonoBehaviour {

	

    void OnTriggerEnter(Collider collider)
    {
        Debug.Log("Enter" + collider.gameObject.name);

        string gameobj_name = collider.gameObject.name;

        if( gameobj_name == "SphereWin")
        {
            SceneManager.LoadScene("Win");
        }
        if (gameobj_name == "SphereLose")
        {
            SceneManager.LoadScene("Lose");
        }
            
    }

}

将在Project面板刚才写好的TriggerEnter文件,按住不动拖放到Hierarchy 面板下的Cube游戏物体上

创建返回按钮并配置逻辑,保存Game场景

在 Hierarchy面板下,单击鼠标右键,选择 UI–>Button
修改Button按钮的位置到屏幕上面,中间位置,调整大小
修改Text文字内容为“返回主菜单”
选中Button,选择右侧Inspector面板下面,OnClick下面的加号,将场景中的ChangeScenes拖放到RuntimeOnly下面的框中,在右侧选择GoToNextScene方法,操作方法如下图
在这里插入图片描述

在 Hierarchy面板下,选中ChangeScenes,在右侧Inspector面板,SceneName变量处填写Menu,如下图
在这里插入图片描述

保存场景,命名为Game

创建Win场景和Lose场景

新建一个场景,创建一个Button和Text,
修改Text文字为“恭喜你赢了”,
修改Buttion下面Text文字为“返回主菜单”

同样的方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上,填写SceneName变量处填写Menu

同上面的方法,添加Button按钮的点击触发

保存场景,命名为Win


同样的方式,创建Lose场景
新建一个场景,创建一个Button和Text,
修改Text文字为“你输了请重新来过”,
修改Buttion下面Text文字为“返回主菜单”
同样的方法,在 Hierarchy 面板下 右键Create Empty ,创建空的GameObject ,修改名称为 ChangeScenes,同样的方式将ChangeScenes.cs脚本拖放到 Hierarchy 面板的ChangeScenes游戏物体上,填写SceneName变量处填写Menu

同上面的方法,添加Button按钮的点击触发

保存场景,命名为Lose

将场景添加到BuildSettings里面

在这里插入图片描述
选中4个场景,或者一个一个选择拖放,都拖放到BuildSettings里面
在这里插入图片描述

测试运行

在这里插入图片描述

游戏效果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3D入门Demo-Cube移动-触发球体-切换场景 的相关文章

  • unity多个贴图shader

    在一个Material上放多个贴图的测试 比如一个plane上放四个贴图 Shader aaa Properties MainTex Texture 2D white MainTex2 Texture 2D white MainTex3 T
  • Unity中的单元测试

    我知道的单元测试有两种方法 1 从Unity的AssetStore窗口下载UnityTestTools 已下架了 2 使用TestRuner 2018 2 5以上版本有 我用的是2018 2 7 TestRuner的用法 操作窗口 Wind
  • 服务器时间管理器

    时间戳管理器 using System using UnityEngine public class SyncTime Singleton
  • Unity笔记-打飞碟游戏

    目的 创建一个打飞碟游戏 简陋 游戏要求 游戏要分多个 round 飞碟数量每个 round 都是 n 个 但色彩 大小 发射位置 速度 角度 每次发射数量可以变化 游戏过程中 仅能创建 n 个飞碟 且不容许初始化阶段生成任何飞碟 飞碟线路
  • 我的和unity3d的小故事1——恶魔射手之鼠标控制移动之input.getaxis("Horizontal")与input.getaxis("Vertical")

    跟着恶魔射手视频学习的过程中遇到的第一个问题是怎么也移动不了 那么问题来了 打印出来是获得的下面两个值都是0 怎么办呢 改edit下面的projectsetting里面的input属性下面两个值的type都改成mouse movement
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • Unity 导出XCode工程运行报错: ‘UnityFramework/UnityFramework.h‘ file not found

    简介 近期项目升级到2019 4 10f1版本 在用自动化打包的时候 遇到了一些问题 其中一个是 在导出XCode工程之后 运行工程的时候 编译报错 UnityFramework UnityFramework h file not foun
  • PyQt开发样例: 利用QToolBox开发的桌面工具箱Demo

    老猿Python博文目录 专栏 使用PyQt开发图形界面Python应用 老猿Python博客地址 一 引言 toolBox工具箱是一个容器部件 对应类为QToolBox 在其内有一列从上到下顺序排列的标签部件项 tabbed widget
  • RAIN{INDIE} 自动寻路

    Unity游戏中有较多的自动寻路插件 看过几个 大同小异 而RAIN中的Behavior Tree感觉很好 听名字就知道很条理 下面 就用它做个简单的寻路小例子 首先 导入RAIN的包 结构如下 在使用的过程当中还会产生几个文件夹用来存放E
  • Unity 音频卡顿 静帧 等待等问题的解决方案

    是否遇到过在Unity中加载音频文件卡顿 也就是画面卡住 的现象 特别是加载外部音频文件时 虽然时间很短 但这终归不是什么好现象 尤其是打游戏的话 影响很大 但是一些有牌面的Boss也不能不配音乐 当然也可以通过其它方式解决 比如特定条件统
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • unity本地分数排行榜简单解决方案(Json)

    具体效果 大体方法 创建一个分数类Score和一个分数类的容器List
  • 【Unity灯光与渲染技术】Global Illumination全局光照

    本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering 同时会加上一点个人实践过程和理解 分割线 这篇文章主要讲全局光照 在看教程的时候就有一个点不是很理解 就是作者开启物体的static这个选项
  • Unity3D如何修改Button显示的文字以及深入了解Button组件

    在创建了一个Button后 结构如图 先仔细观察一下Button的Inspector视图 发现其中竟然有一个叫Button的脚本组件 新建脚本 代码如下 并将该脚本绑定给Canvas组件 using UnityEngine UI using
  • NO.6——Unity3D中两种绘制小地图的方法

    在玩游戏时 你经常会发现 在游戏窗口的右上角或者左下角通常会有一个小地图 里边实时反馈角色的移动信息甚至是世界地图 那么这个小地图是如何绘制的呢 我目前掌握了两种方法 一种是以GUI方法重新绘制一个小窗口 另一种是新建一个正交投影的摄像机机
  • Unity3D的四种坐标系

    1 World Space 世界坐标 我们在场景中添加物体 如 Cube 他们都是以世界坐标显示在场景中的 transform position可以获得该位置坐标 2 Screen Space 屏幕坐标 以像素来定义的 以屏幕的左下角为 0
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • Tornado websocket 演示的 Nginx 配置?

    有人可以向我提供 Tornado websocket 聊天演示的 Nginx 配置吗 该演示位于 tornado demos websocket 像这样的配置将起作用 events worker connections 1024 http
  • requirejs Angular 似乎没有注册控制器/服务/等

    我有一个非常简单的 requirejs 和 Angular 演示应用程序 当我运行代码时 就好像 Angular 没有注册 homeController 即使文件确实运行并输出 来自家庭控制器的 Hello 令人沮丧的是几乎没有关于如何解决
  • 管理软件的演示版本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个用VB6编写的软件产品 它是一个付费软件产品 有1个月的演示版本 演示版本没有单独的安装文件 输入产品密钥后 软件会将演示版本

随机推荐

  • vue学习-02vue入门之组件

    删除Vue cli预设 在用户根目录下 C Users 你的用户名 这个地址里有一个 vuerc 文件 修改或删除配置 组件 Props 组件之间的数据传递 Prop 的大小写 camelCase vs kebab case 不敏感 Pro
  • 线程同步概念

    带着问题去思考 什么是线程同步 线程同步能解决哪些问题 如何实现线程同步 线程同步是指两个或多个线程协同步调 按预期的顺序执行代码 若两个或多个线程同时写同一块内存或访问同一资源时 需线程同步 若线程A的执行依赖线程B的结果 需线程同步 输
  • 在外部js文件中直接调用vue文件中自定义的方法

    1 在vue文件引入API import getCurrentInstance onMounted from vue onMounted 用于挂载数据 getCurrentInstance 用于获取实例后再使用 2 定义setup 方法 s
  • vue——组件中的样式改变方法

    一般我们自己封装的组件或者组件库 element vant antdesign 中的样式在页面中必要的时候需要改变时 解决方法如下 解决方法 在页面中重新写一个 不要改成局部的 scope 页面中全局修改 在上一部的中 改变组件样式时 要先
  • 关于OpenAI的Gym中的step方法

    文章目录 导读 Gym的step方法 最后的话 导读 本文就只是关于step方法的参数与返回值的一个小小的学习笔记 这也是没有第一时间查官方文档而造成的时间消耗 所以 这篇博客就是逼自己查一下 Gym的step方法 既然都已经用pip下载了
  • whois命令简介

    whois命令简介 一 概述 whois是Linux Unix环境下的命令 按字面意思就是问 他是谁 通过对域名的检索 可以反馈回域名的注册信息 包括持有人 管理资料以及技术联络资料 也包括该域名的域名服务器 但是在世界上有几个主要的who
  • Contest2967 - 2022-2023-2 ACM集训队每周程序设计竞赛(1)

    问题 C 付哥题做不完了 内存限制 1024 MB时间限制 2 000 S评测方式 文本比较命题人 admin提交 323解决 44 返回比赛提交提交记录侧边提交 题目描述 付哥今天在做题 他有两个题单A和B 里面的题目数量分别为n和m 每
  • 数据库语法时用到的{},,[]等各类括号分别代表什么?

    lt gt 尖括号 用于分隔字符串 字符串为语法元素的名称 SQL语言的非终结符 定义操作符 用在生成规则中 分隔规则定义的元素和规则定义 被定义的元素位于操作符的左边 规则定义位于操作符的右边 方括号表示规则中的可选元素 方括号中的规则部
  • 推荐一些好用的小技巧给你

    技巧一 微信设置通话铃声 微信 作为一款主打移动通信的软件 没有自己专属的通话 彩铃 是否有些说不过去呢 所以我们可以在微信设置中 添加自己专属的 通话铃声 这样无论哪个好友拨打 微信电话 给你 都能听到你设置的 通话铃声 啦 操作指南 打
  • VC6添加自定义消息(主窗口向子窗口发送消息)

    从主窗口向子窗口发送消息 可以在子窗口中添加自定义的消息 然后在主窗口中需要地方呼叫该消息 呼叫方法 1 将子窗口添加为主窗口的成员变量 2 主窗口呼叫该消息 成员变量名 SendMessage UM PROGRESS 子窗口添加自定义消息
  • 连接Mysql数据库的报错: java.sql.SQLException: Unknown initial character set index ‘255’ received from server

    连接Mysql数据库的报错 java sql SQLException Unknown initial character set index 255 received from server Initial client characte
  • 树(Tree)——(一)基础知识

    目录 关于树的术语 儿子兄弟链式表示法 二叉树概念和基本特征 二叉树的形态 前序 中序 后序遍历特性 习题梳理 树存在的主要意义就是为了方便查找 如二叉树就有二分的思想 关于树的术语 1 结点的度 Degree 结点的子树个数 例如上面的图
  • qt小项目三 代码实现简易的QQ聊天界面的对话框弹出功能

    实现效果 点击成员列表中的头像 实现对应对话框弹出的功能 打开的对话框不可以再次打开 同时弹出提示消息框 打开一个窗口 再次打开该窗口 补充后的代码 myDialog cpp文件中新增信号槽处理函数 myDialog h文件中新增窗口打开状
  • QT学习之三:Qt Creator2.4.1的开发环境的配置和测试

    1 系统环境 主机操作系统 ubuntu10 04 主机编译器 gcc4 4 3 交叉编译器 arm linux gcc 4 3 2 前提条件 搭建好qt4 6 3的三个编译版本 PC X86 ARM 2 安装 Qt SDK Lin32 o
  • 极力推荐一本零基础学python的书籍,看完还没学会我也无能为力了

    python编程 上 下册 此书是由Eric Matthes撰写 他是高中科学和数学老师 现居阿拉斯加 在当地讲授Python入门课程 他从5岁就开始一直在编写程序 python编程 读者受益 该书旨在让你尽快学会Python 以便能够编写
  • Windows Maven解压版安装

    本文须知 安装maven环境之前要先安装java jdk环境 没有安装java环境的可以先去看安装JAVA环境的教程 Maven 3 3 require JDK 1 7 及以上 step1 下载maven 本教程安装的是目前最新版本3 8
  • knife Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPoi

    项目里面集成了knife swagger的升级版 结果报了空指针异常 猜测是版本或者jar冲突的问题 百度一下 有说是springboot 版本跟swagger 版本问题的 后面发现是 spring actutor 里面的guava 跟 k
  • 省选专练之神仙贪心IOI2013Robert

    问题描述 小沐把玩具扔在地板上 乱七八糟 庆幸的是 有一种特殊的机器人可以收拾玩具 不过他需要 确定哪个机器人去拣哪个玩具 一共有 T 个玩具 整数 w i 表示这个玩具的重量 整数 s i 表示这个玩具的体积 机器人有 两种 分别是 弱机
  • 银行日志处理

    与外围系统交换数据 例如信贷管理系统 财务管理系统数据归集等 系统内资金清算 例如通存通兑清算 批量代发代扣等 内部业务处理 例如结息 还息 自动转存 计提应付利息等 对账相关处理 例如生成第三方对账文件等 为数据分析平台准备数据 例如向数
  • Unity3D入门Demo-Cube移动-触发球体-切换场景

    Unity3D入门Demo Cube移动 触发球体 切换场景 新建Unity3D项目 选择3D类型 编写场景切换脚本ChangeScenes 添加场景切换脚本到游戏物体并保存Menu场景 新建Game游戏主场景 并添加方块和两个球体 编写C