Unity3D入门Demo-Cube移动-触发球体-切换场景[通俗易懂]

Unity3D入门Demo-Cube移动-触发球体-切换场景[通俗易懂]Unity3D入门Demo-Cube移动-触发球体-切换场景新建Unity3D项目–选择3D类型编写场景切换脚本ChangeScenes添加场景切换脚本到游戏物体并保存Menu场景新建Game游戏主场景,并添加方块和两个球体编写Cube移动脚本MoveCube编写Cube触发球体脚本TriggerEnter创建返回按钮并配置逻辑,保存Game场景创建Win场景和Lose场景将场景添加到Build…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

新建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里面
在这里插入图片描述

测试运行

在这里插入图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169323.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【操作系统】进程管理(二)「建议收藏」

    【操作系统】进程管理(二)「建议收藏」一、前言之前已经介绍了操作系统的各个模块,现在来具体深入学习操作系统中的进程管理。二、进程的基本概念在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另外一个程序

    2022年7月3日
  • Win10禁止更新以及连接适配器更新

    Win10禁止更新以及连接适配器更新记一次windows10更新遇到的坑,包括BOIS更新以及win10的grup启动

    2022年5月30日
  • Google资深工程师深度讲解Go语言-Goroutine并发编程(九)[通俗易懂]

    Google资深工程师深度讲解Go语言-Goroutine并发编程(九)

    2022年2月16日
  • EJB学习心得

    EJB学习心得注意:在EJB中对Bean的定位是通过JNDI的名称来确定的一:当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改其默认的EJB名称, JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称。默认的命名规则如下: 如果把EJB作为模块打包进后缀*.ear的JAVAEE企业应用文件,默认的全局JNDI名称是  本地接口:EAR-FILE-BASE-NAME/EJB-C…

    2022年9月29日
  • Fiddler高级用法-设置断点「建议收藏」

    Fiddler高级用法-设置断点「建议收藏」我们知道Fiddler是位于客户端和服务器之间的代理,它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改

    2022年7月1日
  • java中jvm面试题_mysql基础面试题及答案

    java中jvm面试题_mysql基础面试题及答案Jvm面试题及答案(Jvm面试题大全带答案)发现网上很多Jvm面试题及答案整理都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,有大量经典的Jvm面试题以及答案,包含Jvm语言常见面试题、面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!如果不背Jvm面试题的答案,肯定面试会挂!这套Jvm面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个面试手册,是PDF版的1、ZGC了解吗?JDK11中加入的具有实验性质的低延迟垃圾收集器,目标是尽可能在不影响吞吐

    2022年8月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号