自由学习记录(39)

threshold(blend tree)

Threshold 用来指定动画的完全权重时刻(完全切换点)

参数达到 Threshold 值之后,并不会立即“隔断”当前的动画,而是 平滑过渡到下一个动画

例如:

  • Jump 动画的 Threshold 为 0,这意味着当 yVelocity 为 0 时(如角色起跳时),Jump 动画开始占权。
  • Fall 动画的 Threshold 为 0.5,这意味着当 yVelocity 达到 0.5 时(如角色开始下落时),Fall 动画开始占权。

yVelocity 从 0 到 0.5:当 yVelocity 在接近 0.5 的时候,Blend Tree 会 逐渐增加 Fall 动画的权重,而 Jump 动画的权重会减少

(但在这个像素动画里,这种融合算法,真的和看不出来一样)

 

如果角色速度改变导致动画加速或减速,Homogeneous Speed 会确保所有动画同步调整,避免不协调的情况。

所有与 Blend Tree 相关的动画状态(或状态机中的动画)将 以统一的速度 播放。即动画的时间缩放将会基于参数保持一致,保证所有动画的播放速度同步。

Homogeneous Speed 选项的作用确实比较微妙,并不像其他选项那样会立即显现明显的效果

就像一个全局的刷新

通常,Homogeneous Speed 需要和其他涉及 时间缩放参数变化 的设置结合使用,才能看到明显的效果。比如,如果你有控制动画播放速度的参数(如角色的 Speed),启用 Homogeneous Speed 后,所有动画的速度都会同步变化。

Compute Threshold 决定 该Blend Tree 中哪个 参数 将被用作 动画过渡的阈值计算 

state

Write Defaults 影响动画的初始设置和默认行为(影响不大)

Foot IK(一般自己规定)

  • 功能:启用 Foot IK(逆向运动学)以调整角色脚部的动画。
  • 解释:启用后,脚部将自动调整位置,确保脚跟地面接触,特别是在角色行走时用于避免穿模。
    • 常见用法:适用于角色动画,确保脚部在地面上正确放置,避免脚穿透地面或悬空

Cycle Offset

  • 功能:调整动画的 起始时间
  • 解释Cycle Offset 控制动画循环的起始位置。如果设置为 0,则动画从头开始;如果设置为 0.5,动画将从中间开始播放。
    • 常见用法:例如,当角色从站立到跑步时,使用 Cycle Offset 可以使动画更平滑地过渡

Mirror

  • 功能:是否对动画进行 镜像(翻转)
  • 解释:启用 Mirror 后,动画的方向将被翻转,通常用于调整角色朝向。
    • 常见用法:例如,角色的步态动画如果可以左右对称,启用镜像可以使角色在不同的方向上行走时保持自然。

Motion Time

  • 控制动画的 时间进度
  • 解释:此参数可以让你控制动画的播放位置。通过调整 Motion Time,你可以使动画从特定的时间点开始播放。
    • 常见用法:在某些情况下,可能希望动画从中间或某个特定点开始播放(例如:暂停后恢复播放)。

Speed

  • 功能:控制动画的播放速度。
  • 解释:这个值会影响整个 Blend Tree 中的动画。值为 1 时表示正常速度,值小于 1 时动画会变慢,值大于 1 时动画会变快。
    • 常见用法:例如,当角色在跑步时,可以增加速度使动画播放更快。

列表顺序决定播放要哪个,mute了则相当于列表排除这个state,solo则是只留这一个state在列表

  • Solo:确保 当前动画状态唯一播放,覆盖其他动画状态。
  • Mute:使 当前动画状态静音,即使该状态被触发,动画不会播放。

 都是在anystate transition了多个动画状态,每个动画状态的条件都满足,可以solo一个状态,或者,让这个状态mute不播

blend tree 是属于状态机Controller的一种合成状态,不会生成新的文件

当前动画状态会立刻被打断,并且没有预设的过渡时间,默认情况下是立即切换到新的状态,这意味着没有任何平滑的过渡过程。如果你不显式设置过渡条件,它会跳过过渡,直接切换到目标状态

AnyState 转换条件的优先级是最高的,即使当前有其他多个状态也满足条件,AnyState 触发后会立即中断当前状态并切换到目标状态。

Unity Animator 中,AnyState 的优先级的确是 大于当前的所有状态,即当满足 AnyState 转换条件时,它会强制触发一个新的状态过渡,无论当前其他状态是否也满足条件。

通过一个blendtree,融合了在空中的角色状态管控,

然后通过暴露的yvelocity参数在外部同步刚体,达到随着速度而改变的目的

一旦接触地面则返回至idle动画状态

为什么使用 Blend Tree?

  • 动态动画过渡:你可以在运行时根据不同的输入(例如速度、方向、动作状态)在多个动画之间进行过渡。比如:角色的走路和跑步动画可以根据角色的移动速度平滑过渡。
  • 简化动画控制:Blend Tree 通过多参数控制,让动画的转换更加自然,而不是只依赖固定的触发器。
  • 减少动画切换问题:直接通过 Blend Tree 控制,不会产生明显的动画“跳跃”,使得过渡更加流畅。

地面上才可以跳跃

需要建立ground的层来接受判断

Gizmos 一定要写在 OnDrawGizmos() 里吗?

是的,所有 Gizmos 相关的绘制方法(如 Gizmos.DrawLine()Gizmos.DrawSphere() 等)都必须写在 OnDrawGizmos()OnDrawGizmosSelected(),否则不会生效。

  • Gizmos 不会在游戏运行时(Game 视图)显示,它们仅在 Scene 视图 中用于调试。
  • 主要作用是让程序员在非运行状态下可视化一些信息,比如:
    • 碰撞检测范围
    • 射线检测
    • 触发区域
    • 路径点

想让 Gizmos 只在选中对象时可见,还可以用 OnDrawGizmosSelected()

  • Gizmos.DrawLine(Vector3 start, Vector3 end)
    • 这个方法会在 Scene 视图 中从 start 点画一条直线到 end 点。
  • transform.position
    • 代表当前 GameObject 的 世界坐标
  • new Vector3(transform.position.x, transform.position.y - groundCheckDistance)
    • 生成一个新的 终点坐标,它的 X 轴保持不变,Y 轴向下移动 groundCheckDistance,通常用于检测地面。

多个版本的 Physics2D.Raycast

如果你需要检测多个物体,而不是只返回一个 RaycastHit2D,可以使用 Physics2D.RaycastAll

RaycastHit2D[] hits = Physics2D.RaycastAll(transform.position, Vector2.down, groundDistance, groundLayer);
foreach (RaycastHit2D hit in hits)
{
    Debug.Log("Hit: " + hit.collider.name);
}

Unity 会自动处理这个结构体并将其转换为 bool 类型。实际上,Unity 在底层执行的是类似于

bool isGrounded = (

Physics2D.Raycast(transform.position, Vector2.down, groundDistance, groundLayer)

.collider != null);

Header(“在inspector窗口分隔一下”)

如果在标题之后,你有一个私人的值,而这个值并没有暴露给inspector

那之后的也不会显示出来(private有 阻断 )

----放的开,相信功能的一些可控性,熟练它?

 

----------

他の者にできたか?ここまでやれたか?この先できるか?

这种if else本身加了这些大括号之后,占的行就很大,这在Alex看来就算一种代码过多了

过渡(Transition)

✅ ① Has Exit Time(退出时间)

  • 未勾选,意味着状态切换不受“当前动画(当前正在占用播放的动画--transition-->下一个Animation Clip)播放进度”限制,而是基于某个条件(通常是参数触发)。
  • 如果勾选,那么过渡会在动画播放到特定时间点(如 80%)时触发。

✅ ② Fixed Duration(时长与目标动画)

  • 已勾选,表示 transition duration是 固定的物理帧时间单位(s秒为单位)
  • 未勾选,则过渡时间会以动画时长为基准(如 0.25 代表 25% 的当前动画时长)。
  • Transition Duration(过渡时长)百分比 (%) 形式表示时,它是基于当前动画状态(前一个动画)的时长 来计算的,而不是固定的绝对秒数。

✅ ③ Transition Duration(过渡动画的时间区间)

  • 0.25 秒,表示从 Idle → Move 需要 0.25 秒的过渡动画,不会立即切换,而是有一个混合的过程。

✅ ④ Transition Offset(过渡到目标动画时,offset一些目标动画)

  • 值为 0,表示目标动画(Move)从第 0 帧开始播放。
  • 如果设为 0.5,则 Move 目标状态会从一半的动画进度开始播放。

✅ ⑤ Interruption Source(中断来源)

  • None,表示在过渡过程中,不允许其他状态打断这个过渡。

✅ ⑥ Ordered Interruption(有序中断)

  • 已勾选,表示如果发生多个中断请求,会按照特定顺序进行处理。

过渡时间 (Transition Duration) 的对象是谁?

过渡时间 (Transition Duration) 指的是 两个动画状态(Idle → Move)之间的插值(Blending)时长,它的对象是两个动画状态同时进行的混合部分,而不是只属于某一个动画。

在 Unity 的 Animator 过渡中,过渡时间影响的是两个动画的混合过程

  • 起始状态(Idle)逐渐淡出(Fade Out)
  • 目标状态(Move)逐渐淡入(Fade In)

所以,这个过渡时间不是 Idle 的,也不是 Move 的,而是它们混合的阶段

VScode快捷键

code Action 

shift+alt +f 整理代码

把选中的代码用{}包裹起来   Shift + {

f12  跳到这个函数的定义

选中 光标的 当前行  Ctrl + L

ctrl+ . 不能使用,是输入法的原因,去搜狗把ctrl+。的快捷键关了

college things

centos-7-isos-x86_64安装包下载_开源镜像站-阿里云

centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

baseurl要换,但gpgkey也要换,不要看到File就觉得是本地文件不能乱动了,问题就出在这

右上角看到很多人加,有的人又没加

但实际上这个与主要代码找baseurl没有关联

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

sudo yum update (开始更新,会询问你是否相信)

Retrieving key from http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 From       : http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: ^C

当你从新镜像源(如阿里云镜像)下载软件包时,yum 需要验证该镜像源的 GPG 密钥

至于为什么会连着问几次

多个仓库(例如 baseupdatesextras 等),每个仓库可能都有自己的 GPG 密钥。

因此,在安装过程中,yum 会提示你每个仓库的 GPG 密钥是否可信,如果你配置了多个仓库,它就会询问你多次。

有时,如果镜像源的 GPG 密钥配置不完全或者有多个镜像源提供了不同的密钥,yum 可能会分别询问是否接受这些密钥。这种情况可能发生在你更改或添加了多个镜像源时。

也是晚来了,,原来是这个意思,刚看到的时候,没怎么去管、

fcitx居然没包,另一个框架tool也没

[root@localhost ~]# sudo yum install fcitx fcitx-pinyin
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package fcitx available.
No package fcitx-pinyin available.
Error: Nothing to do
[root@localhost ~]# 

解决方案:启用 EPEL 仓库并安装 Fcitx

输入法 并不是操作系统(如 CentOS)自带的核心功能,而是作为 外部程序 来提供的

  • 输入法框架的功能:输入法框架负责接收键盘输入并将其转化为特定语言的字符。由于输入法涉及到语言的特殊处理、字符转换和词库管理等功能,所以它作为一个单独的程序来实现,并且可以根据用户需求进行安装和配置。

  • 跨平台支持:许多输入法框架(例如 FcitxIBus)是跨平台的,支持多种操作系统和桌面环境。它们作为独立软件包,方便用户根据需求安装,并提供图形界面来配置和管理输入法。

  • 灵活性和扩展性:输入法通常可以通过外部插件或额外的词库扩展功能,因此它们作为独立的程序更容易进行更新和扩展。

sudo yum install epel-release
导输入法的包

sudo yum install fcitx fcitx-pinyin
想使用图形化界面来配置 Fcitx,安装配置工具

sudo yum install fcitx-configtool(至少这个框架让我可以选输入法用了)

但还是打不了中文..

--------不对可以打中文

这个只展示常用language,,66(但好像没什么关系)

主要是

不过在终端用好像有点问题,字删不干净

其他的其他

fcitx-configtoolFcitx 输入法框架的一部分。

如果你的系统中没有安装 Fcitx,那么自然无法找到 fcitx-configtool

也就是说,不先安装这个输入法,也就不能安装其他的输入法

fcitx-configtoolFcitx 输入法框架 的配置工具,用于管理和配置你安装的输入法。它是图形化的工具,允许你轻松地添加、删除和调整输入法的设置。

终端输入

wget https://pinyin.sogou.com/linux/download.php?f=linux&url=stable/sogoupinyin-*.rpm

可以在终端中通过命令行安装 搜狗输入法(Sogou Input Method),但是你需要首先下载其安装包。由于 搜狗输入法 不在 CentOS 的默认软件仓库中,你需要手动下载并安装。

[abc@localhost ~]$ sudo yum install fcitx fcitx-pinyin [sudo]

password for abc: (这里我输入了正确的密码)

abc is not in the sudoers file. This incident will be reported.

给自己sudo 的权限

CentOS 7 默认情况下没有安装中文输入法,你可以使用 Fcitx 输入法框架,它支持多种中文输入法(如拼音、五笔等)。

---不过对虚拟机的了解倒是比之前深了,知道了网卡在虚拟机里也是可以制造一个全新的,不过没多久也会慢慢变成一个浅印象吧

接触最多的就是vi /etc/yum.repos.d/CentOS-Base.repo

删了又删里面的代码,还看别人,学着去改成官网的绝对路径

还有DNS的配置,也跟着AI去加了,然饼软(这bird大学也是够了)

硬是给我干了几个小时

这个mini版的镜像文件我只能说不是为了历练就别碰

---都已经写到弹出了,也是没谁了

右键点击DVD驱动器,打开快捷菜单栏,弹出,之后可删除。

sudo:

  • 作用sudo 是用来以 超级用户(root) 权限运行命令。因为修改系统文件通常需要管理员权限,所以需要使用 sudo 来提升权限。
  • 例如,sudo vi /etc/yum.repos.d/CentOS-Base.repo 会以 root 权限编辑该文件。

2. vi:

  • 作用vi 是一种文本编辑器,用于在命令行界面中编辑文件。在 Linux 系统中,vi 被广泛用来编辑配置文件。
  • 如果你不熟悉 vi,它有一些基本操作:
    • i 进入 插入模式(编辑文本)。
    • Esc 退出插入模式,返回到命令模式。
    • 输入 :wq 保存并退出文件。
    • 输入 :q! 强制退出(不保存更改)。

yum相关的命令

是管理 CentOS 系统软件包的关键工具,帮助你高效地安装、更新和管理系统软件

1. yum install <package>

作用:安装一个软件包。

示例:

yum install vim

这会安装 vim 编辑器。

2. yum remove <package>

作用:删除一个软件包。

示例:

yum remove vim

这会删除 vim 编辑器。

3. yum update

作用:更新所有已安装的软件包到最新版本。

示例:

yum update

这会检查所有已安装的包,并尝试将它们更新到仓库中可用的最新版本。

4. yum update <package>

作用:更新指定的软件包。

示例:

yum update vim

这会更新 vim 软件包。

5. yum groupinstall <groupname>

作用:安装一个软件包组。软件包组是一系列软件包的集合,用于满足特定的需求(例如,安装图形化界面、开发工具等)。

示例:

yum groupinstall "X Window System"

这会安装 X Window 系统及其相关组件。

6. yum groupremove <groupname>

作用:删除一个软件包组。

示例:

yum groupremove "X Window System"

这会删除 X Window 系统及其相关组件。

7. yum search <package>

作用:搜索软件包。

示例:

yum search vim

这会搜索所有与 vim 相关的软件包。

8. yum info <package>

作用:显示软件包的详细信息(如版本、大小、依赖等)。

示例:

yum info vim

这会显示 vim 包的详细信息。

9. yum list installed

作用:列出所有已安装的软件包。

示例:

yum list installed

这会列出当前系统中所有已安装的软件包。

10. yum list available

作用:列出所有可用的、尚未安装的软件包。

示例:

yum list available

这会列出所有在仓库中可用但尚未安装的软件包。

11. yum clean all

作用:清理 yum 缓存,包括已下载的包和元数据。

示例:

yum clean all

这会清理所有缓存,通常在遇到问题时有助于解决一些仓库问题或更新问题。

12. yum makecache

作用:重新生成 yum 的缓存。

示例:

yum makecache

这会更新 yum 的缓存,确保它使用的是最新的仓库数据。

其他

--------------

centos系统的网络相关初始设置

ls /etc/sysconfig/network-scripts/

  • 命令ls
  • 作用列出 /etc/sysconfig/network-scripts/ 目录下的文件和文件夹。这个目录存储了与网络接口相关的配置文件和脚本。

cat /etc/sysconfig/network-scripts/ifcfg-ens33

  • 命令cat
  • 作用显示 ifcfg-ens33 文件的内容。该文件定义了网络接口 ens33 的配置,如 IP 地址、网关、DNS 等。

NAT 模式是什么意思?

NAT(Network Address Translation,网络地址转换)模式是一种常用的虚拟机网络配置方式,

用于 将虚拟机的网络流量通过主机的网络连接进行转发,使得虚拟机能够访问外部网络(例如互联网),而无需直接暴露虚拟机的 IP 地址。

编辑文件的话,可以按以下步骤操作:

  1. 打开终端,然后使用 vi 命令编辑文件:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

  2. 进入编辑模式:在 vi 编辑器中,按下 i 键进入插入模式。

  3. 修改文件内容,确保配置类似这样:

    DEVICE=ens33 BOOTPROTO=dhcp ONBOOT=yes

  4. 保存并退出:按下 Esc 键退出插入模式,然后输入 :wq 来保存并退出。

Hardware Address (MAC 地址):显示网卡的硬件地址,即 MAC 地址,用于唯一标识该网卡。

IP Address:这是分配给虚拟机的 IP 地址,在这个例子中是 192.168.5.128

Subnet Mask:子网掩码,用于确定网络中的可用地址范围,这里是 255.255.255.0

Default Route (默认路由):默认网关地址,通常是用来转发网络流量到外部网络的设备的 IP 地址,在这里是 192.168.5.2

  • DNS:域名系统(DNS)服务器地址,用于解析域名到 IP 地址,在这个例子中是 192.168.5.2

  • Host Name:主机名字段,当前显示的是 localhost.localdomain,你可以修改它来设置虚拟机的主机名。

网络接口是这个虚拟机里的这一个centos7系统的网络功能,是我本机的网络功能提供的?

操作系统通过虚拟机提供的网络接口与外部网络进行通信(如 ens32eth0

这个MAC 地址是是我本机的,而不是虚拟机吗

虚拟机的 MAC 地址,是虚拟机网络接口的唯一标识符。每个网络接口都有一个唯一的 MAC 地址,用于在局域网中标识设备。虚拟机有自己独立的 MAC 地址,而不是宿主机的。

分配给虚拟机的 IP 地址,这个IP地址是本机的还是虚拟机的,IP地址在这指什么,是属于设备的还是外部的

路由和dns同样的问题,这个IP是谁的

默认网关的 IP 地址通常是由你所在网络中的 路由器 提供的,而这个路由器一般是通过你的 本地网络硬件资源 来提供的

  • 对象:你的本地网络路由器的 IP 地址。
  • 目标:将来自你设备的数据包转发到其他网络(比如互联网)

DNS:虚拟机通过 DNS 服务器来解析域名(如 google.com)到 IP 地址,使得虚拟机能够访问互联网服务

  • DNS 是负责将域名(如 google.com)解析为 IP 地址的系统。DNS 服务器的地址可以来自多个地方:
    • 本地网络的路由器:许多家庭或办公室的路由器会自动提供 DNS 解析服务,它们会将 DNS 请求转发给上游的 DNS 服务器(如 Google 或 ISP 提供的 DNS)。
    • 全球 DNS 服务器:一些公用的全球 DNS 服务,如 Google DNS (8.8.8.88.8.4.4) 或 Cloudflare DNS (1.1.1.1),可以在没有本地 DNS 服务器的情况下直接使用。

对象与目标

  • 对象:DNS 服务器的 IP 地址(如 8.8.8.8)。
  • 目标:将域名解析成对应的 IP 地址,帮助你设备找到目标服务器

hostname是在哪一块起到自我识别的功能,还是只是单纯随意的,作用不大

主机名是一个 标识符,用于在网络中唯一地标识你的设备。它是在 操作系统层面 设置的,不直接影响网络通信的基本功能(比如 IP 地址、路由、DNS 等)

  • 识别设备:主机名帮助你和其他人通过网络识别特定的设备。比如,当你在局域网内有多个设备时,你可以通过主机名来区分它们。
  • 网络服务:某些网络服务和协议(如 NFS、SSH、Ping 等)可能会使用主机名来识别目标设备。例如,ping 命令可以使用主机名来访问设备,像 ping my-centos7

在这张截图中,你看到的是在 CentOS 7 中配置 网络接口 时的一个对话框,其中显示的是选择设备类型的选项,当前选择的是 Bond。这是一个 网络绑定(Bonding) 配置的界面,意味着你可以将多个物理网络接口组合为一个虚拟接口,以增加网络带宽或提高网络冗余。

为什么一个操作系统可以有多个网络接口?

实际上,一个操作系统可以有多个网络接口,尤其是在虚拟化环境中,多个接口可以让操作系统通过不同的路径连接到宿主机或外部网络。

网络接口的多个用途:

  1. 多网络连接:一个操作系统可以通过多个网络接口同时连接到多个网络。比如,你可以通过一个接口连接到内网,另一个接口连接到外网,或者一个用于管理,另一个用于数据传输。

  2. 网络绑定(Bonding):在某些情况下,你可能希望将多个物理网络接口绑定为一个虚拟接口(Bond),这可以提升网络带宽或者提供故障转移(高可用性)。例如,两个网络接口可以作为一个 Bond 接口一起工作,以提供更高的带宽和冗余。

  3. 虚拟机和容器环境:在虚拟化环境中,虚拟机(或容器)内的操作系统可能需要通过多个虚拟网卡与宿主机或外部网络进行通信。

Bonding 的用途:

在这张截图中的 Bond 选项,表示你可以将多个网络接口绑定成一个。绑定网络接口常见的原因包括:

  • 增加带宽:通过将多个网络接口绑定到一起,数据流量可以被分配到不同的接口,提升整体带宽。
  • 高可用性:当一个接口发生故障时,绑定的其他接口仍然可以继续工作,确保网络的连续性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值