Skip to content

🧩 节点概述:构建世界的基础

在 YuanEngine 中,节点 (Node) 是构成游戏的最小单位。无论是光影、复杂的 3D 模型,还是看不见的空气墙,它们本质上都是一个“节点”。

如果你有 Three.js 背景,可以将其理解为 THREE.Object3D 的封装;如果你来自 Unity,它等同于 GameObject


1. 节点到底是什么?

想象一下,节点就像一个透明的、隐形的快递盒

  • 它本身没有形状,也没有颜色。
  • 它唯一自带的属性是空间信息:它在哪(位置)、转了多少度(旋转)、有多大(缩放)。

节点 vs. 模型:它们是一回事吗?

不是。 这是新手最容易产生误解的地方。

  • 节点 (Node):是容器,负责定义“在空间中的位置”。
  • 模型 (Model/Mesh):是放在容器里的“东西”。

形象理解: 节点是你的“手心”,模型是手心里的“苹果”。当你移动手心时,苹果会跟着动;但你也可以把苹果丢掉,换成一只橘子(切换组件),而手心的位置依然在那。


2. 父子层级 (Hierarchy):空间继承的艺术

节点之间可以互相嵌套,形成“父子关系”。这是游戏引擎组织场景的核心逻辑。

核心规则:父动,子随

  • 父节点:引领者。
  • 子节点:跟随者。

当父节点移动、旋转或缩放时,子节点会保持与父节点的相对关系并同步变化。

生活中的例子: 想象你在高铁上走动。

  • 高铁是“父节点”。
  • 是“子节点”。
  • 当高铁以 300km/h 移动时,你不需要费力奔跑,也会跟着高铁一起移动。你在高铁里的“相对位置”(比如你在 3 号车厢)是没有改变的。

3. 为什么要有“空节点”?

既然节点是透明的,为什么右键菜单上有一个什么都不放的“空节点”?

  1. 作为“文件夹”组织场景:你可以创建一个名为 Street_Lights 的空节点,把街上所有的路灯节点都丢进去。这样你一键隐藏父节点,所有的路灯就都消失了。
  2. 作为旋转中心 (Pivot):如果你想让一个地球绕着太阳转,但地球模型本身的中心点在自己身上,你可以创建一个位于太阳中心的空节点作为父级,让地球作为子级。旋转这个空节点,地球就会像划圆圈一样绕着转。
  3. 逻辑占位符:比如用来标记玩家的复活点、摄像机的观察点等。

4. 组件 (Component):节点的“超能力”

节点本身只是个位置信息,它通过挂载组件来获得能力:

  • 挂载了 Mesh 组件,它就变成了看得见的东西。
  • 挂载了 Light 组件,它就变成了光源。
  • 挂载了 Script 组件,它就拥有了逻辑(比如点击会爆炸)。

总结

节点定义了“在哪”,组件定义了“是什么”或“能做什么”。