384人加入学习
(0人评价)
GDScript初学者入门教程-基于Godot和AI教学

使用Godot4.6.2 制作完成于2026.5.13

价格 免费

### 12. Vector2 / Color(内置值类型)

Vector(中文:向量,),在godot中保存坐标或向量,在数学中,向量指具有大小和方向的量。在二维平面三维空间中,它可以形象化地表示为带箭头的线段。与向量对应的量叫做数量,只有大小,没有方向。

Color 是按照RGBA模式进行操作的:

R->RED,G->GREEN,B->BLUE,A->ALPHA

> 配套示例:`examples/12_vector_color.gd`

GDScript 内置了一批"几何 / 颜色"类型,写代码时离不开。

#### Vector2 向量

```gdscript
var pos := Vector2(100, 50) #坐标:100表示下,50表示y
var velocity := Vector2(3, 4)

# 向量加减乘除:跟数字一样自然,x和y坐标分别各自运算
pos + velocity              # Vector2(103, 54)
velocity * 2                # Vector2(6, 8)

# 方向常量(写移动代码每天都用)因为godot的坐标系设定为x轴向右为正,y轴向下为正
Vector2.ZERO                # (0, 0)
Vector2.UP                  # (0, -1)(y 轴向下,向上是负的)
Vector2.RIGHT               # (1, 0)

# 常用方法
velocity.length()           # 5.0 这里涉及到向量的运算,对角线长度^2 = 边长a^2 + 边长b^2 ± 2ab*cos (θ) 其中,a和b是平行四边形的相邻边长,θ是这两边之间的夹角。 根据平行四边形的不同类型,我们可以使用这个公式的不同形式。 例如,对于矩形,θ=90°,cos (θ)=0,所以公式简化为对角线长度^2 = a^2 + b^2。 对于菱形,a=b,且对角线互相垂直,因此可以直接使用勾股定理计算。
velocity.normalized()       # 单位向量(长度为 1)
pos.distance_to(target)     # 两点距离
pos.direction_to(target)    # 朝目标的单位向量
```

#### Color

```gdscript
var red := Color(1, 0, 0, 1)              # 浮点 RGBA,每个分量 0~1
var semi_blue := Color(0, 0, 1, 0.5)      # 半透明
var orange := Color("ff8000")             # 十六进制字符串
var green := Color.GREEN                  # 命名常量
```

> 还有 `Vector3` / `Vector4` / `Rect2` / `Transform2D` 等,按需查 Godot 文档。

## 第 12 节:Vector2 / Color(内置值类型)
##
## 演示常用的 Vector2 操作和 Color 表示。

extends Node


func _ready() -> void:
    demo_vector2()
    demo_color()


func demo_vector2() -> void:
    print("--- Vector2 ---")

    # 创建
    var pos := Vector2(100, 50)
    var velocity := Vector2(3, 4)
    print("位置:", pos)  #输出:位置:(100.0, 50.0)
    print("速度:", velocity)  #输出:速度:(3.0, 4.0)

    # 内置方向常量
    print("Vector2.ZERO  =", Vector2.ZERO)  #输出:Vector2.ZERO  =(0.0, 0.0)
    print("Vector2.UP    =", Vector2.UP) #输出:Vector2.UP    =(0.0, -1.0)
    print("Vector2.RIGHT =", Vector2.RIGHT)  #输出:Vector2.RIGHT =(1.0, 0.0)
    

    # 向量运算
    var new_pos := pos + velocity
    print("位置 + 速度 =", new_pos) #输出:位置 + 速度 =(103.0, 54.0)
    print("速度 * 2    =", velocity * 2)  #输出:速度 * 2    =(6.0, 8.0)

    # 长度与单位向量
    print("速度的长度:", velocity.length())            # 5.0
    print("速度归一化(单位向量):", velocity.normalized())

    # 距离与朝向
    var a := Vector2(0, 0)
    var b := Vector2(3, 4)
    print("a 到 b 的距离:", a.distance_to(b))          # 5
    print("a 指向 b 的单位向量:", a.direction_to(b))   # (0.6, 0.8)  b-a


func demo_color() -> void:
    print("--- Color ---")

    # 浮点 RGBA(0~1)
    var red := Color(0.276, 0.565, 0.763, 1.0)
    var semi_blue := Color(0, 0, 1, 0.5)
    print("纯红:", red)   #输出:纯红:(1.0, 0.0, 0.0, 1.0)
    print("半透明蓝:", semi_blue)  #输出:半透明蓝:(0.0, 0.0, 1.0, 0.5)

    # 也可以用十六进制字符串
    var orange := Color("ff8000")
    print("橘色:", orange)  #输出:橘色:(0.0, 0.502, 0.0, 1.0)

    # 命名颜色(常量)
    print("Color.GREEN:", Color.GREEN)  #输出:Color.GREEN:(0.0, 1.0, 0.0, 1.0)
    

 

[展开全文]

授课教师

问问题加入A计划,有专门负责答疑的老师哦!!!

课程特色

下载资料(1)
视频(35)