草庐IT

Unity学习笔记[一] RollBall小游戏

陈子青 - See 2023-10-27 原文

目录

一、适配vs

二、初识Unity

2.1 unity核心模块

2.2 Unity基本操作和场景操作

2.3 世界坐标系和局部坐标系

2.4 工具栏 QWER

三、基础知识

3.1 基本组件

3.2 刚体组件

3.2.1 获取刚体组件

3.2.2 给刚体施加力

3.3 三维向量Vector3

3.4 通过按键控制左右运动

3.5 控制相机位置和跟随

3.6 物体旋转

3.7 碰撞检测

3.8 触发检测

四、RollBall游戏开发案例


一、适配vs

Edit -> Preference -> External Tools、

二、初识Unity

2.1 unity核心模块

(1)Project:工程面板,存放工程的各种资源。声音、模型、场景、材质等。

(2)Hierarchy: 层级面板,战士当前打开的场景里面有那些东西(游戏物体)。

(3)Inspector:检视面板(属性面板),查看一个游戏物体由哪些组件组成。

因此,场景 = 多个游戏物体   多个游戏物体包含多个组件

(4)Scene:场景面板,显示当前场景的样子

2.2 Unity基本操作和场景操作

1、如何创建基本模型和如何导入复杂模型

2、场景基本操作 聚焦:双击游戏物体 或者 F 放大缩小视野:鼠标滚轮 围绕物体旋转:Alt+鼠标左键 使用MoveTool下 移动物体

3、视野分类 Persp 透视视野 ISO平行视野 在不同视野下:关于鼠标右键的不同

4、保存(场景保存、代码保存) Ctrl + S

2.3 世界坐标系和局部坐标系

(1)坐标系:x 左右 y 上下 z 前后

(2)局部坐标系  : 父物体与子物体

(3)单位: Unity坐标以米为单位

2.4 工具栏 QWER

三、基础知识

3.1 基本组件

Transform:变换组件,位置、旋转、缩放。

Mesh Filter:网格

Meth Render:网格渲染(这个组件会使用材质进行渲染)

Collider:碰撞检测

3.2 刚体组件

3.2.1 获取刚体组件

private Rigidbody rd;
rd = GetComponent<Rigidbody>();

3.2.2 给刚体施加力

rd.AddForce(Vector3.forward);

3.3 三维向量Vector3

三维向量 (x,y,z) Vector3.forward 等于 (0,0,1)

一些常用的向量 Vector3.right Vector3.left Vector3.forward Vector3.back Vector3.up Vector3.down

创建向量 new Vector3(x,y,z)

3.4 通过按键控制左右运动

1. 如何设置(Project Setting -》Input Manager)

2.左右键/AD

float h = Input.GetAxis("Horizontal");

 3.上下键/WS

float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h,0, v));

3.5 控制相机位置和跟随

步骤:

1、得到Player的Transform

2、计算位置偏移

3、根据位置偏移设置相机的位置

public Transform playerTransform;
private Vector3 offset;
// Start is called before the first frame update
void Start()
{
offset = transform.position - playerTransform.position;
}
// Update is called once per frame
void Update()
{
transform.position = playerTransform.position + offset;
}

3.6 物体旋转

transform.Rotate(Vector3.up,Space.World);

3.7 碰撞检测

碰撞事件  OnCollisionEnter OnCollisionExit  OnCollisionStay

private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.tag  == "Food")
        {
            Destroy(collision.gameObject);
        }
    }

3.8 触发检测

触发事件 OnTriggerEnter OnTriggerStay OnTriggerExit


    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Food")
        {
            Destroy(other.gameObject);
            score++;
            scoreText.text = "分数: " + score;
        }
        if(score >= 11)
        {
            winText.SetActive(true); //物体可见
        }
    }

四、RollBall游戏开发案例

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

public class Player : MonoBehaviour
{
    public Rigidbody rd;
    public int score = 0;
    public Text scoreText;
    public GameObject winText;
    
    // Start is called before the first frame update
    void Start()
    {
        //  Debug.Log("游戏开始了");
        rd = GetComponent<Rigidbody>();
      
    }

    // Update is called once per frame
    void Update()
    {
        // Debug.Log("游戏正在执行");
        float fh = Input.GetAxis("Horizontal");
        float fw = Input.GetAxis("Vertical");
        //   rd.AddForce(new Vector3(fh, 0, fw));

        rd.AddForce(new Vector3(fh,0,fw));

        //rd.AddForce(Vector3.up);
    }

    private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.tag  == "Food")
        {
            Destroy(collision.gameObject);
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Food")
        {
            Destroy(other.gameObject);
            score++;
            scoreText.text = "分数: " + score;
        }
        if(score >= 11)
        {
            winText.SetActive(true);
        }
    }
}

有关Unity学习笔记[一] RollBall小游戏的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  3. unity---接入Admob - 2

    目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里​编辑 3.解析依赖到项目中

  4. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  7. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  8. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  9. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  10. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

随机推荐