Unity核心

news2024/11/23 15:44:14

回顾

Unity核心学习的主要内容

项目展示

基础知识

认识模型制作流程

2D相关

图片导入设置相关

图片导入概述

参数设置——纹理类型

参数设置——纹理形状

参数设置——高级设置

参数设置——平铺拉伸

参数设置——平台设置(非常重要)

Sprite

Sprite Editor —— Single图片编辑

Sprite Editor —— Multiple图集元素分割

Sprite Editor —— 多边形编辑

用的较少,了解即可

Sprite Renderer

练习:

Sprite Creator

练习:

SpriteMask

练习:

Sorting Group

图集制作

练习

2D物理系统

刚体

碰撞器

练习:

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

public class PlayerObject : MonoBehaviour
{
    public float moveSpeed = 5;
    private float h;

    private SpriteRenderer sr;

    private Rigidbody2D rigidbody2D;

    // Start is called before the first frame update
    void Start()
    {
        sr = this.GetComponent<SpriteRenderer>();
        rigidbody2D = this.GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxis("Horizontal");
        //this.transform.Translate(Vector2.right * moveSpeed * Time.deltaTime * h);

        //由于 重力 会给予对象 y方向的值 所以我们左右移动 应该只是改变左右速度 y的速度应该保留原有的值
        //rigidbody2D.velocity = Vector2.right * h * moveSpeed;
        rigidbody2D.velocity = new Vector2(h * moveSpeed, rigidbody2D.velocity.y);

        if (h < 0)
            sr.flipX = true;
        else if (h > 0)
            sr.flipX = false;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            //创建子弹预设体
            GameObject obj = Instantiate(Resources.Load<GameObject>("BulletObj"), this.transform.position + new Vector3(sr.flipX ? -0.3f : 0.3f, 0.5f, 0), Quaternion.identity);
            //告诉子弹朝哪个方向动
            obj.GetComponent<BulletMove>().ChangeMoveDir(sr.flipX ? Vector3.left : Vector3.right);
        }

        if (Input.GetKeyDown(KeyCode.J))
        {
            //给它一个向上的瞬时力
            rigidbody2D.AddForce(Vector2.up * 300);
        }

    }
}

物理材质

恒定力

效应器

练习

SpriteShape

Sprite Shape Profile 精灵形状概述文件

Sprite ShapeRenderer 和 Sprite Shape Controller

精灵形状渲染器和控制器

练习:

TileMap——瓦片地图

瓦片资源

瓦片调色器窗口使用

(本节知识点较多,复习时可以配合视频进行)

重点

1.需要修改工程的自定义轴排序 以Y轴决定渲染顺序

x = 0 ; y = 1; z = -0.26;

2.如果地图存在前后关系需要修改TileRenderer的渲染模式

瓦片地图关键脚本和碰撞器

练习:

运用了平台效应器

官方拓展包导入

下载地址:
 https://github.com/Unity-Technologies/2d-extras

官方拓展包——新增瓦片类型

官方拓展包——新增笔刷类型

代码控制相关

动画基础

Animation动画窗口

认识Animation动画窗口

创建编辑动画

代码控制动画(老动画系统)

练习:

Animator动画状态机

有限状态机概念

Animator Controller —— 动画控制器(状态机)

代码控制动画状态机切换

练习:

2D动画

序列帧动画

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

public class Lesson35 : MonoBehaviour
{
    public Sprite[] sprs;

    private SpriteRenderer spriteR;
    private float time = 0;
    private int nowIndex = 0;

    public Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        #region 知识点一 什么是序列帧动画
        //我们最常见的序列帧动画就是我们看的 日本动画片
        //以固定时间间隔 按序列切换图片 就是 序列帧动画的本质
        //当固定时间间隔足够短时 我们肉眼就会认为图片是连续动态的 进而形成动画(会动的画面)

        //它的本质和游戏的帧率概念有点类似

        //原理就是在一个循环中按一定时间间隔不停的切换显示的图片
        #endregion

        #region 知识点二 代码制作序列帧动画
        //我们先尝试用原理 通过代码来实现序列帧动画

        spriteR = this.GetComponent<SpriteRenderer>();
        spriteR.sprite = sprs[nowIndex];
        #endregion

        #region 知识点三 Animation窗口制作序列帧动画
        //方法一:
        //1.创建一个空物体
        //2.创建一个动画
        //3.直接将某一个动作的序列帧拖入窗口中

        //方法二:
        //直接将图片拖入Hierarchy 层级窗口中

        //注意:需要修改动画帧率 来控制动画的播放速度
        #endregion

        #region 知识点四 利用Animator 进行动画控制
        #endregion
    }

    // Update is called once per frame
    void Update()
    {
        //每一次增加帧间隔时间
        time += Time.deltaTime;
        //当帧间隔时间达到某一个条件时 就切换图片
        if (time >= 0.03)
        {
            //索引增加 切换图片
            ++nowIndex;
            //判断是否 重头显示
            if (nowIndex >= sprs.Length)
                nowIndex = 0;
            spriteR.sprite = sprs[nowIndex];
            time = 0;
            
        }

        //知识点四
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetBool("IsDown", true);
        }
        else if(Input.GetKeyUp(KeyCode.Space))
        {
            animator.SetBool("IsDown", false);
        }
    }
}

练习

2D骨骼动画

2D Animation

2D Animation_骨骼动画制作基础——单张图片编辑

练习

2D Animation_骨骼动画制作基础——图集编辑

练习

2D Animation_骨骼动画制作基础——PSB图集编辑

2D Animation_反向动力学IK

练习

2D Animation_换装_换装资源在同一个文件中

2D Animation_换装——换装资源在不同文件中

Spine

Spine_Spine运行库导入

官方地址:http://http:zh.esotericsoftware.com/

Spine_Spine骨骼动画使用

Spine_Spine骨骼动画参数相关

Spine_Spinr骨骼动画代码控制_Spine骨骼动画代码控制相关

模型导入相关设置

模型导入概述

Model页签

Rig操纵(骨骼)页签)

Animation——动画页签

动画页签概述

基础信息设置

动画剪辑属性基本设置

动画剪辑属性其它设置

预览窗口

Materials——材质纹理页签

3D动画相关

3D动画的使用

练习

后退直接有的是向前走的动画,只要倒着播放就可以

​​​​

添加事件

动画分层和遮罩

练习

动画1D混合

练习:

动画2D混合

练习

动画子状态机

练习:

动画IK控制

练习

先加一个头部的位置获取点

主要知识点是——四元数相关的

通过头部位置点计算出一个获取位置的虚拟点,通过它来控制转向

动作目标匹配

StateMachineBehaviour——状态机行为脚本

状态机复用

角色控制器

导航寻路系统

导航寻路系统概述

导航网格生成

导航网格寻路组件

导航网格外连接组件

导航网格动态障碍组件

通过鼠标右键点击让障碍物失活

总结

做实践项目之前需要先把:UGUI和数据持久化Json学习完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个cmake版的C++项目代码模板,包含流水线、git以及代码格式化配置等支持CICD发布流程

本文给出快速构建C项目的代码仓库模板 &#xff0c;简单却完整 主要包括&#xff1a; 编译脚本 打包上传脚本- 依赖拉取 代码格式化配置 git配置 流水线pipeline配置 使用这个模板 你只需要&#xff1a;将源文件放到模块目录下&#xff0c;并添加到cmake中即可 一、简…

今日头条屏幕适配深度剖析

基本概念 首先几个基本概念解释&#xff1a; ● dpi&#xff1a;该值代表的是一英寸上有多少个像素点&#xff0c;常见取值为120&#xff0c;160&#xff0c;240。一般这个值才叫做密度 在android里面获取的方法为 metrics.densityDpi; 屏幕尺寸/分辨率得出DPI&#xff0c;一个…

Spring Boot集成vaadin快速入门demo

1.什么是vaadin&#xff1f; Vaadin 是用于构建单页 Web 应用的流行 Java 框架。 它由一家专门从事富 Internet 应用设计和开发的芬兰公司开发。 估计有 15 万开发者使用 Vaadin。 它的开发始于 2002 年。 Vaadin 框架特性 以下是 Vaadin 特性的列表&#xff1a; 这是一个 J…

这周,接连两位程序员猝死...

这周接连发生了两起不幸的事。俩位程序员去世的消息&#xff0c;深感悲伤和惋惜。 6月17号下午&#xff0c;一位负责研发的女员工在虾皮研发中心办公室猝死&#xff0c;年仅 30 岁。 官方通告&#xff1a; 同一天&#xff0c;另一位科大讯飞的高级测试工程师在家突发不适离世…

修改文件的权限(linux篇)

1.在yl用户下创建一个demo.txt文件 [rootlocalhost ~]# su yl [yllocalhost root]$ cd [yllocalhost ~]$ cd Desktop/ [yllocalhost Desktop]$ ls [yllocalhost Desktop]$ vim demo.txt 填入一些信息进行保存 2.查看文件信息以及所对应的组 [yllocalhost Desktop]$ ll 总用量…

一颗B+树可以存储多少数据?

一、前言 这个问题&#xff0c;非常经典&#xff0c;考察的点很多&#xff1a; 比如&#xff1a; 1、操作系统存储的单元&#xff0c;毕竟mysql也是运行在操作系统之上的应用。 2、B树是针对Mysql的InnoDB存储引擎&#xff0c;所以要理解InnoDb的最小存储单元&#xff0c;页&…

解两道四年级奥数题(等差数列)玩玩

1、1&#xff5e;200这200个连续自然数的全部数字之和是________。 2、2&#xff0c;4&#xff0c;6&#xff0c;……&#xff0c;2008这些偶数的所有各位数字之和是________。 这两道题算易错吧&#xff0c;这里求数字之和&#xff0c;比如124这个数的全部数字之和是1247。 …

【yolov8语义分割】跑通:下载yolov8+预测图片+预测视频

1、下载yolov8到autodl上 git clone https://github.com/ultralytics/ultralytics 下载到Yolov8文件夹下面 另外&#xff1a;现在yolov8支持像包一样导入&#xff0c;pip install就可以 2、yolov8 语义分割文档 看官方文档&#xff1a;主页 -Ultralytics YOLO 文档 还能切…

使用 DISPATCHERS 进行 Blueprint 之间的通信

文章目录 初始准备DISPATCHERS 的创建和绑定实现效果 初始准备 首先 UE5 默认是不提供 静态网格体编辑器也就是 Modeling Mode 的&#xff0c;这里需要从插件中添加 Modeling Tools Editor Mode 进入 Modeling Mode 模式&#xff0c;创建一个正方体 然后利用 PolyGroup Edit 和…

告别手抖尴尬!教你轻松缓解手部震颤的小秘诀!

在我们的日常生活中&#xff0c;手抖这个现象可能并不罕见。不论是因为紧张、疲劳还是某些健康问题&#xff0c;手抖都会给我们的生活带来诸多不便。今天&#xff0c;就让我们一起探讨如何缓解手部震颤&#xff0c;让你告别手抖的尴尬&#xff01; 一、手抖的成因及影响 手抖&…

定点计算与浮点计算在MCU上的较量:以电机控制系统算法实现为例

在嵌入式系统尤其是电机控制算法的实现过程中&#xff0c;定点计算与浮点计算的选取始终是一个重要议题。电机控制系统对实时性和计算效率有着极高要求&#xff0c;而MCU&#xff08;微控制器&#xff09;作为其核心处理器&#xff0c;其计算模式的选择直接影响整个系统的性能。…

pycharm中的使用技巧

1、更改主题&#xff1a;找到设置&#xff0c;然后更改主题 点击选择自己喜欢的主题&#xff0c;然后就可以更改主题了 2、设置字体的快捷键 找到设置&#xff0c;如下&#xff1a; 找到increase&#xff0c;如下&#xff1a; 右键选择&#xff0c;增加字体快捷键 按住ctrl滑轮…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解&#xff0c;教程如下&#xff1a; 第一步&#xff0c;双击运行 Ziperello双击我打开程序.exe&#xff0c;如下图&#xff1a; 第二步&#xff0c;打开一个加了密的 ZIP 压缩包&#xff0c;再…

LCR 142.训练计划IV

1.题目要求: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ int compare(const void* a,const void* b) {return (*(int*)a - *(int*)b); } struct ListNode* trainningPlan(struct ListNode* l1, struct Li…

Linux驱动开发笔记(十三)Sysfs文件系统

文章目录 前言一、Sysfs1.1 Sysfs的引入1.2 Sysfs的目录结构1.2 Sysfs的目录详解1.2.1 devices1.2.2 bus1.2.3 class1.2.4 devices、bus、class目录之间的关系1.2.5 其他子目录 二、Sysfs使用2.1 核心数据结构2.2 相关函数2.2.1 kobject_create_and_add2.2.2 kobject_put()2.2.…

转让5000万内资融资租赁公司变更需要的条件和变更时间

我们现在有一家陕西的融资租赁公司公司是非常干净的非常适合接手后直接开展业务如果北京的不能够变更了我们这边还有渠道可以变更现在能做的越来越少了&#xff0c;详情流程致电咨询或者来我们公司面谈。 现成融资租赁公司转让&#xff1a; 1、公司名称&#xff1a;陕西xxX融资…

【龙晰 离线安装openssl-devel】openssl-devel rpm 离线安装 需要下载哪些安rpm 包

进入龙晰镜像源地址下载 http://mirrors.openanolis.cn/anolis/8/BaseOS/x86_64/os/Packages/(base) [rootAI lib64]# yum install openssl-devel Last metadata expiration check: 14:03:32 ago on Fri 21 Jun 2024 07:26:56 AM CST. Dependencies resolved. Package …

Linux扩展lvm分区实践 -- 使用其他磁盘的空间

如图&#xff0c;根分区900G&#xff0c;计划将另一块磁盘sdb分出1T来给根分区 步骤 1&#xff1a;创建新的分区 sudo fdisk /dev/sdb输入 n 创建一个新分区 然后选择分区类型&#xff0c;输入p 设置起始扇区&#xff08;默认&#xff09;&#xff0c;然后设置分区大小&…

nginx启动之后任务管理器里面没有nginx进程

原因1&#xff1a;确保你的nginx文件夹里面只包含英文路径&#xff01;绝对不能有中文&#xff01; 原因2&#xff1a; 到conf\nginx.conf里面查看端口和IP地址是否正确设置&#xff0c;ip地址有无正确输入

MySQL之复制(十)

复制 改变主库 确定期望的日志位置 如果有备库和新主库的位置不相同&#xff0c;则需要找到该备库最后一条执行的时间在新主库的二进制日志中相应的位置&#xff0c;然后再执行CHANGE MASTER TO.可以通过mysqlbinlog工具来找到备库执行的最后一条查询&#xff0c;然后在主库上…