godot-start/doc/demo05_scene_node/scene_node.md

91 lines
3.9 KiB
Markdown
Raw Normal View History

2022-01-22 06:05:17 +00:00
# 1. 屏幕坐标
2021-10-03 01:02:45 +00:00
![Image text](image/坐标系.png)
![Image text](image/坐标系-godot-1.png)
![Image text](image/坐标系-godot-4个象限.png)
![Image text](image/坐标系-ps.JPG)
```
2022-01-21 14:48:55 +00:00
因为刚开始的时候有点疑惑godot的坐标系原点既然在左上角。
unitycocos的2d原点都在左下角就很符合数学里面的象限左下角的2d坐标系感觉很复合习惯。
2021-10-03 01:02:45 +00:00
后来了解到计算机屏幕是从左上角开始刷新的2d坐标系左上角为原点可以屏幕坐标系吻合可以提升一点效率。
unity的2d坐标系虽然在左下角但是unity的屏幕坐标系依然在左上角不统一。
虽然godot的2d坐标系在左上角的坐标系刚开始看不舒服但是和屏幕坐标系吻合了也算一种统一就不需要untiy2d的那么多概念了为godot点赞。
因为单论平面内容制作左上原点更符合视觉习惯也更符合设计常识比如ps。
```
2022-01-22 06:05:17 +00:00
- 世界坐标系又称为全局坐标系以场景树的root节点为坐标系原点
- 相对坐标系又称为局部坐标系或者本地坐标系相对于父节点的坐标godot的坐标都是相对坐标
- 屏幕坐标:屏幕的左上角为坐标系原点
- 屏幕分辨率屏幕分辨率是指纵横向上的像素点数单位是px4:3 是最常见屏幕比例
![Image text](image/pixel.jpg)
- 屏幕像素和图片像素有什么关系
```
在屏幕显示图片时,如果屏幕的长宽比、像素数和图片一致,只需要每个屏幕像素用子像素的敏感组合表示出图片上的像素就可以了。
那如果图片像素数和屏幕像素数不一样呢?
当图片像素大于屏幕像素时,屏幕也是进行合并显示的。
比如一张1200W像素的图片要在300W像素的显示器长宽比一致上显示那么系统就需要将图片像素进行四合一计算然后再显示。
当图片像素数大于屏幕像素数时,高像素图片和低像素图片的显示精细度是一样的!
```
- 在godot中一般position的1个单位长度等于1个图片像素
2022-01-18 11:02:18 +00:00
# 2. 全局和相对坐标的相互转化
2021-10-04 08:49:12 +00:00
2022-01-18 11:02:18 +00:00
- 全局坐标和局部坐标(相对坐标)可以相互转化
2021-10-04 08:49:12 +00:00
```
2022-01-18 11:02:18 +00:00
Node2D及其子节点的位置可以使用position和gloabl_position来控制。
其中,前者是该节点相对于父节点的相对位置,后者是全局位置。
2021-10-04 08:49:12 +00:00
简而言之position的坐标系是以父节点的位置坐标为原点的坐标系方向还是水平向右为x轴正方向竖直向下为y轴正方向。
需要注意的是,全局位置是以场景的左上角为原点的,并不是以根结点的位置作为原点的
```
2022-01-18 11:02:18 +00:00
# 3. 场景和节点
2021-10-03 01:02:45 +00:00
2021-10-03 06:22:00 +00:00
![Image text](image/场景.png)
2021-10-03 01:02:45 +00:00
![Image text](image/节点.png)
![Image text](image/节点渲染顺序.png)
2021-10-03 14:43:19 +00:00
![Image text](image/节点的顺序.png)
2021-10-03 01:02:45 +00:00
2021-10-03 06:22:00 +00:00
- 一个游戏可以包含多个场景但是一个场景中必须有一个根节点一个根节点可以包含多个不重名的子节点unity的子节点可以同名不同名更加符合习惯为godot点赞。
2021-10-03 01:02:45 +00:00
2022-01-18 11:02:18 +00:00
# 4. 基本组件
2021-10-03 01:02:45 +00:00
2022-01-22 11:12:49 +00:00
- CanvasItem节点CanvasItem -> Node -> Object
- Canvas是画布的意思所以CanvasItem代表了就是可以被绘制节点可以设置可视化界面和材质的颜色
- 所有的2D节点和GUI节点都继承于CanvasItem节点
2022-01-21 14:48:55 +00:00
![Image text](./image/component1.png)
2022-01-22 11:12:49 +00:00
- Sprite节点Node2d -> CanvasItem -> Node -> Object
- 用来显示一张图片
2022-01-21 14:48:55 +00:00
![Image text](./image/component2.png)
2022-01-22 11:12:49 +00:00
- Texture类Resource -> Reference -> Object
- Texture 贴图附加到物体表面的贴图实际上就是包含一张Image图片
- 可以用在3D模型中当作贴图或者2D的Sprite中当作图片或者GUI的背景
2022-01-21 14:48:55 +00:00
![Image text](./image/component3.png)
2022-01-22 11:12:49 +00:00
- Image类Resource -> Reference -> Object
- 包含了图片的数
2022-01-21 14:48:55 +00:00
![Image text](./image/component4.png)
2022-01-22 11:12:49 +00:00
- 总结
2022-01-21 14:48:55 +00:00
![Image text](./image/component5.png)