【Unity基础】day1整理 -----小球吃金币

2023-10-30

小球

先搭一个场地Plane,命名Map ,通过将四个墙的立方体归入Map,可以同时控制大小。在这里插入图片描述
分别赋予场地和墙的材质
在这里插入图片描述
创造一个小球Player 赋予材质和刚体,因为要实现键盘操作控制小球,因此需要写脚本挂载到Player上。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 所有能够挂载到游戏对象的组件都要继承 MonoBehaviour 
// 文件名和类名保持一致,如果不一致就不能挂载在上去

public class PlayerController : MonoBehaviour
{
    public float speed;
    //刚体组件,作用:添加重力效果
    Rigidbody rig;
    //public 类型的字段大部分都是可以序列化(保存到本地)

    // 资源初始化函数,只执行一次 , 类似构造函数的功能
    void Start()
    {
        //推荐使用这样赋值
        rig = GetComponent<Rigidbody>();//获取当前组件所在对象上的其他组件
    }

    // 逻辑处理和按键处理函数,每帧执行一次
    void FixedUpdate() //用来处理物理相关函数
    {
        //通过wasd 控制角色移动
        float h = Input.GetAxis("Horizontal");//获取水平按键轴值*(-1~1
        float v = Input.GetAxis("Vertical");

        /* print(h);
         Debug.Log("日志信息");
         Debug.LogError("错误信息");
         Debug.LogWarning("警告信息");*/

        //通过刚体组件给角色添加一个力,使其移动

        if (rig)//判断rig是否为空
        {
            rig.AddForce(new Vector3(h, 0, v) * speed);
        }
        //按下空格键之后,
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rig.AddForce(Vector3.up * speed);
        }
    }
}

金币

由于后面要不断地创建新的金币, 因此直接将金币的游戏对象放入预设体中, 然后创建一个空的GameObject管理已经创建的金币。
在这里插入图片描述
(Resources文件夹的名字固定不可更改)

我们需要让小球绕着世界坐标Y轴自转 ,创建一个Coin的脚本,在里面定义旋转速度:
在这里插入图片描述
可以在Unity里面操作这个数值(前提这个字段必须是public ):
在这里插入图片描述

当小球触碰到金币时 , 金币会消失:
此时有两种方式:
碰撞检测

 //刚开始碰撞执行的函数
    private void OnCollisionEnter(Collision collision)
    {
        //  Destroy(this);//销毁当前脚本对象
        Destroy(this.gameObject); //销毁当前脚本挂载的组件对应的游戏对象
    }
    //离开碰撞执行的函数
    private void OnCollisionExit(Collision collision)
    {

    }
    //待在碰撞器里面执行的函数
    private void OnCollisionStay(Collision collision)
    {

    }

触发检测

 private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))  //只有跟小球触碰才销毁
        {
            Destroy(this.gameObject);
        }

    }
    private void OnTriggerExit(Collider other)
    {

    }

    private void OnTriggerStay(Collider other)
    {

    }

金币脚本代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coin : MonoBehaviour
{
    // Start is called before the first frame update
    public float rotateSpeed;//金币每秒钟旋转速度
    void Start()
    {
        //给金币一个随机旋转角度
        //Random是个随机类
        rotateSpeed = Random.Range(60, 360);
    }

    // Update is called once per frame
    void Update()
    {
        //Time类是时间控制类 ,deltaTime是每两帧之间的时间间隔
        transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime, Space.World);//绕着Y轴 
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))  //只有跟小球触碰才销毁
        {
            Destroy(this.gameObject);
        }

    }
}

之后通过ItemManager(也就管理所有金币的游戏对象)的脚本生成金币

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemManager : MonoBehaviour
{
    //给预设体赋值2种方式:
        /*
        1 设定public变量,在属性面板直接拖拽赋值
        2 通过资源管理器加载赋值 ,Resources文件夹(名字固定)
         */
    GameObject goCoinPrefab;//金币预设体对象
    // Start is called before the first frame update
    void Start()
    {
        goCoinPrefab = Resources.Load<GameObject>("Prefabs/Coin");  //通过资源管理器加载预设体对象,只是在内存中没有实例化引擎
        for (int i = 0; i < 10; i++)
        {
        GameObject goCoin = Instantiate(goCoinPrefab);//创建实例对象(克隆函数),生成到场景中
        goCoin.transform.position = new Vector3(i, 0.74f, 0); //对象属性赋值
        goCoin.name = "coin" + i;
        goCoin.transform.parent = this.transform;
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

效果如下:
在这里插入图片描述

资源管理器的整理:
在这里插入图片描述

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

【Unity基础】day1整理 -----小球吃金币 的相关文章

  • Unity用Vuforia做AR实现脱卡效果

    有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前 或者到一个特定的位置 我们能对其进行操作 这就是脱卡功能 自带的脱卡功能应该是ExtendedTracking 允许模型在识别图丢失的时候还存在 位置不变 在丢失的时候的位置 这样也
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • unity后台加密时间锁

    前言 在做一些项目的时候 有些不良甲方在给完项目后会有不给尾款的情况 之前都是加一些水印啥的 感觉不是很方便 第一不美观 第二如果甲方给完尾款后还得重新打包去水印 然后又做过一个本地的时间锁 等到时间 程序直接退出 但是感觉还是不方便 有时
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • 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
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • 游戏开发创建操作之玩家信息系统的建立

    游戏一般都需要玩家信息系统 那么我们应该如何搭建玩家信息系统 接下来我将展示一种简单的方法 完整代码如下 using System Collections using System Collections Generic using Uni
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste

随机推荐

  • 看完这篇 教你玩转渗透测试靶机vulnhub——DC3

    Vulnhub靶机DC3渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 漏洞发现 SQL注入 文件上传 提权 Vulnhub靶机渗透总结 Vulnhub靶机介绍 v
  • 邮件被拒错误代码大全

    http bbs chinaunix net thread 962544 1 1 html 1 邮件地址错误 如果退信原因中有如下信息之一 请检查收信人的邮件地址是否有误 550
  • 【HTTP/1.1、HTTP/2、HTTP/3】

    文章目录 HTTP 1 1 如何优化 避免发送HTTP请求 减少HTTP次数 减少 HTTP 响应的数据大小 HTTP 2 HTTP 1 1性能问题 HTTP 2的性能优化 头部压缩 二进制帧 重点 并发传输 服务器主动推送资源 HTTP
  • 如何在IDEA中显示时序图

    如何在IDEA中显示时序图 有时候 我们想要了解代码的运行过程的时候 想要看到方法的调用流程 这个时候就希望有一个时序图可以看 但是人工来画时序图太麻烦了 有没有办法在IDEA中直接生成呢 当然是可以的 这里我们需要使用到Sequence
  • Python实现单例模式8种方法的优缺点比较

    Python实现单例 结论先行 为什么要使用单例模式 实例化过程原理 评价标准 一 使用类方法 getInstance 作为获取实例的接口 二 使用模块 同名实例替换类变量 三 使用函数装饰器 四 使用类装饰器 五 使用装饰器返回类 六 使
  • 微信小程序客服

    1 微信公众平台 功能 客服 微信客服 处 填写对应的企业ID 完成绑定 2 wx openCustomerServiceChat wx openCustomerServiceChat Object object 微信开放文档 qq com
  • 外观模式(Facade)

    摘录自 大话设计模式 外观模式 外观模式 Facade 为子系统中的一组接口提供一个一致的界面 此模式定义了一个高层接口 这个接口使得这一子系统更加容易使用 四个子系统的类 public class SubSystemOne public
  • Spring boot_公众号模板消息

    1 pom引入
  • 算法笔试题_2

    给定一个 N 进制正整数 把它的各位数字上数字倒过来排列组成一个新数 然后与原数相加 如果是回文数则停止 如果不是 则重复这个操作 直到和为回文数为止 如果 N 超过 10 使用英文字母来表示那些大于 9 的数码 例如对 16 进制数来说
  • 大数据技术与人工智能的关系

    结合了学习的知识和网上的相关资料 我个人觉得大数据与人工智能的关系如下 人工智能需要数据来建立其智能 特别是机器学习 大数据技术为人工智能提供了强大的存储能力和计算能力 如果说大数据相当于人的大脑存储了海量知识 而人工智能则是吸收了大量的数
  • the sip module implements API v12.0 to v12.8 but the PyQt5.QtGui module requires API v12.9

    问题描述 RuntimeError the sip module implements API v12 0 to v12 8 but the PyQt5 QtGui module requires API v12 9 分析原因 pyqt更新
  • Git Extension工具安装及使用

    以下界面所示的三个工具 如果没安装过 则勾上让其安装 MsysGit为Git的Windows版本 必须要安装 Kdiff为对比 合并工具 可选安装 可以换为使用其它的相关工具 最后一个Windows Credential Store for
  • java判断char是否相等

    在 Java 中可以使用 运算符来判断两个 char 类型的变量是否相等 例如 char c1 a char c2 b if c1 c2 System out println c1 is equal to c2 else System ou
  • 转:Python数据分箱,计算woe,iv

    转自 https zhuanlan zhihu com p 38440477 https www cnblogs com wzdLY p 9853209 html https github com Lucky Bone Discretiza
  • SQL语句的基本常用的一些语法

    1 ORDER BY 字段名 以 排序 如 select from A order by id desc 从大 gt 小 asc 从 小 gt 大 2 Group By 字段名 以 分组 select from A group by id
  • IOTDB-源码解析-查询

    单机查询流程 QueryPlan类 QueryPlan是有关查询相关的类 所有的plan都继承了PhysicalPlan这个虚类 QueryPlan也是一个虚类 其UML类图如下所示 IotDB中的各种reader 此章节请酌情参考查询基础
  • 白盒测试(基本路径法)代码

    白盒测试的一种常用方法是基本路径法 根据源代码构造程序流程图 转换为控制流图 得到基本路径 进而为每条基本路径设计测试用例 基本路径法的一个关键步骤是识别出所有的基本路径 本次作业要求你写一个C 程序 输入 待测程序的控制流图 输出 圈复杂
  • chisel环境安装

    step 0 把java装好 chisel依赖于java的 所以第一步你要装个java 去oracle官网去下载 下面网站 Java SE Development Kit 8 下载 www oracle com 如果你恰好家境贫寒 就下上面
  • 关于多项目使用Maven子工程无法使用

    前几天在网上找了一个商城的项目实战遇到一个问题 导入各种包但是Spring的核心配置文件还是全篇爆红 我自己记录一下我的解决方案 因为是多项目的问题 我当时创建文件的时候都把文件建在了Maven的parent目录下 所以无法导包进入 将每个
  • 【Unity基础】day1整理 -----小球吃金币

    小球 先搭一个场地Plane 命名Map 通过将四个墙的立方体归入Map 可以同时控制大小 分别赋予场地和墙的材质 创造一个小球Player 赋予材质和刚体 因为要实现键盘操作控制小球 因此需要写脚本挂载到Player上 using Sys