You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Godot 3.5.1中缩放数组内存储的StreamTexture纹理?

Godot 3.5.1 纹理缩放绘制实现方法

在Godot 3.5.1中,draw_texture函数没有直接接收缩放向量的参数,你可以通过以下两种方式实现纹理的缩放绘制:

方法一:使用draw_texture_rect绘制缩放后的矩形区域

通过计算纹理缩放后的尺寸,构建居中的绘制矩形来实现缩放效果:

for splash_planet in splash_planets:
    var center = Vector2(splash_planet._x, splash_planet._y)
    var texture = splash_planet._texture
    # 自定义缩放因子
    var scale_x = 0.5
    var scale_y = 0.5
    
    # 计算缩放后的纹理尺寸
    var scaled_size = texture.get_size() * Vector2(scale_x, scale_y)
    # 构建以center为中心的绘制矩形(左上角坐标 = 中心 - 缩放尺寸的一半)
    var draw_rect = Rect2(center - scaled_size / 2, scaled_size)
    
    # 绘制缩放后的纹理(第三个参数设为false表示不平铺)
    draw_texture_rect(texture, draw_rect, false)

方法二:使用Transform2D应用缩放变换

通过构建包含缩放的变换矩阵,结合draw_texture实现更灵活的变换绘制:

for splash_planet in splash_planets:
    var center = Vector2(splash_planet._x, splash_planet._y)
    var texture = splash_planet._texture
    # 自定义缩放因子
    var scale_x = 0.5
    var scale_y = 0.5
    
    # 构建变换:先将纹理中心对齐到目标位置,再应用缩放
    var transform = Transform2D()
    # 平移到目标中心
    transform.translate(center)
    # 以中心为原点缩放
    transform.scale(Vector2(scale_x, scale_y))
    # 平移回纹理左上角的初始偏移(确保纹理居中)
    transform.translate(-texture.get_size() / 2)
    
    # 应用变换绘制纹理(第二个参数设为Vector2.ZERO,因为变换已包含位置信息)
    draw_texture(texture, Vector2.ZERO, transform)

两种方法的适用场景:

  • 若仅需简单缩放,draw_texture_rect更直观易读
  • 若后续需要添加旋转、倾斜等其他变换,Transform2D的方式扩展性更强

内容的提问来源于stack exchange,提问作者Ian McCurdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:20:41