【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整理 -----小球吃金币 的相关文章

  • 从0到1搭建个人博客-Django(九)

    你好 我是goldsunC 让我们一起进步吧 从0到1搭建个人博客 Django 九 回顾系列博客请到专栏哦 增加修改文章功能 修改文章功能和新建文章功能类似 只不过修改文章的模板里面已经有了相应文章的内容 先来增加个视图函数来实现修改文章

随机推荐

  • 看完这篇 教你玩转渗透测试靶机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