retreatafter

导航

 

本节目录

  1. 1.图层
  2. 2.基本图像变换
    1. (1)大小
    2. (2)坐标
    3. (3)挂点
    4. (4)图片组
    5. (5)透明度
    6. (6)旋转角度
    7. (7)图片组合
  3. 3.高级图像变换
    1. (1)动画效果
    2. (2)转场效果
  4. 4.游戏启动Logo
  5. 5.transform

1.图层

  • (1)在renpy中默认定义了4个图层,来划分不同的功能并实现各个功能之间不过多产生耦合。
    • master:主要用于背景和角色精灵(图集),常用语句scene、show、hide。
    • screens:该图层用于界面系统。
    • transient:UI函数使用的默认图层。
    • overlay:当UI函数被覆盖(overlay)函数调用时,默认使用的图层。

2.基本图像变换

(1)大小

  • 1)对图片大小的修改不会修改资源文件中图片原本大小,仅影响展示在游戏中的图片大小。
  • 2)使用zoom [比例]来按比例调整图片大小。
  • 3)使用size([长度],[宽度])来具体设置图片大小。
  • 2026__引擎.Renpy__图像控制.基本图像变换.大小
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 按比例缩放
    zoom 0.5

image c3:
    # game文件夹下到图片文件的完整路径
    "/images/c3.jpg"
    # 按比例缩放
    size(100, 400)

label start:
    show c2
    show c3
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

(2)坐标

  • 1)设置锚点:使用xanchor/yanchor [像素位置]来设置图片x轴和y轴上的锚点位置。
  • 2)设置坐标:使用xpos/ypos [像素位置]来设置图片展示在游戏屏幕上的x轴和y轴位置。xpos 0 ypos 0表示在左上角。也可以使用xalign/yalign [0-1之间的值]来自动按屏幕大小比例调整图片位置。
  • 2026__引擎.Renpy__图像控制.基本图像变换.坐标
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # x轴锚点设置在中央
    xanchor 0.5
    # y轴锚点设置在中央
    yanchor 0.5
    # 默认插入时位置,锚点相对于游戏屏幕位置
    xpos 350
    ypos 960
    # xalign 0.7 表示将图片放在屏幕x轴上70%的位置

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

(3)挂点

  • 1)renpy中默认设置了7处挂点:topleft/reset表示左上角,top表示顶部中央,topright表示右上角,left表示左下角,center/default表示底部中央,right表示右下角,truecenter表示正中央。
             +-----------------------------------------------------------+
             |topleft, reset               top                   topright|
             |                                                           |
             |                                                           |
             |                                                           |
             |                                                           |
             |                          truecenter                       |
             |                                                           |
             |                                                           |
             |                                                           |
             |                                                           |
offscreenleft|left                   center, default                right|offscreenright
             +-----------------------------------------------------------+

(4)图片组

  • 1)同时显示多张图片,使用contains语句配合挂点(或指明坐标)来设置多张图像。
    • 2026__引擎.Renpy__图像控制.基本图像变换.图片组
image im:
    contains:
        "#0062ff"
        size(960,540)
        topleft
    contains:
        "#fff"
        size(960,540)
        topright
    contains:
        "#db3dbe"
        size(960,540)
        left
    contains:
        "#433e3e"
        size(960,540)
        right

label start:
    show im
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

(5)透明度

  • 1)使用alpha [0-1数值]来按比例调整图片透明度。
    • 2026__引擎.Renpy__图像控制.基本图像变换
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 取值范围[0,1]
    alpha 0.2

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

(6)旋转角度

  • 1)使用rotate [角度]来按比例调整图片,由于renpy在旋转时会自动调整图片大小以根据对角线进行旋转,因此需要同时配合代码rotate_pad False和transform_anchor True来控制renpy在不改变图片大小的前提下进行旋转。
    • 2026__引擎.Renpy__图像控制.基本图像变换
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 旋转60度
    rotate 60
    rotate_pad False
    transform_anchor True

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

(7)图片组合

  • 1)使用im.Composite()函数对图片进行组合(图层叠加),常见于角色表情切换。示例使用:
image c1ex1 = im.Composite(
    (2000,3200),
    (0,0), "images/c1/c1face.png",
    (0,0), "images/c1/c1ex1.png")

label start:
    show c1ex1
    return

3.高级图像变换

(1)动画效果

  • 1)经常用到的是Warpers函数下的内容,包括linear、ease、pause。
  • 2)线性变换:使用linear [持续时间 秒] [动画效果]语句实现,以图片3秒内旋转360度为例:
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 3秒内旋转360度
    linear 3 rotate 360

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
  • 3)缓动函数:使用ease [持续时间 秒] [动画效果]语句实现,以图片3秒内从左侧移动到右侧为例:
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 3秒内从左侧移动到右侧
    xalign 0.0
    ease 3 xalign 1.0

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
  • 4)时间time:在指定秒数后才发生接下来的图像变换,例如:
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    # 5秒后才会发生接下来的动画
    time 5.0
    # 3秒内旋转360度
    xalign 0.0
    ease 3 xalign 1.0

label start:
    show c2
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
  • 5)暂停pause:直到发生点击动作才执行接下来的内容。
  • 6)重复执行repeat:不断重复定义的动画效果,例如:
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
label start:
    show c2:
        # 需要存在至少一个起始态判断一个动作行为,repeat才能实现循环遍历
        rotate 0
        linear 3 rotate 360
        repeat
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "a""(似乎说了什么……)"
    return
  • 7)动画区块:使用parallel语句实现多个动画的同时运行,以图片3秒内旋转360度同时从左侧移动到右侧为例:
    • parallel语句不能写在预处理的部分,需在插入图片后进行处理。
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
image c2:
    # game文件夹下到图片文件的完整路径
    "/images/c2.jpg"
    xalign 0.0

label start:
    show c2:
		    # 如果要同时运行,每一个动画都需要由区块管理
		    parallel:
				    # 3秒内旋转360度
				    linear 3 rotate 360
		    parallel:
				    # 3秒内从左侧移动到右侧
				    ease 3 xalign 1.0
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
  • 8)粒子效果,如下雨,下雪,简单的此粒子效果可使用SnowBlossom()函数实现。
    • 参数count为显示在屏幕上的粒子数量,border为降落起始点,xspeed为飘落的x轴速度,yspeed为飘落的y轴速度,start为每添加一个粒子时的延迟时间,fast为布尔值,为True时粒子一开始就从界面中心出发,为False则从起始点出发。
    • 2026__引擎.Renpy__图像控制.高级图像变换.动画效果
image snow = SnowBlossom("images/snow.jpg", count = 200, border = 10, xspeed = (-2,50), yspeed = (20,30), start = 0, fast = True)

label start:
    scene s1
    show c2
    # 雪花效果的图层在图片c2之后,即角色图片不会有雪花粒子效果影响
    show snow behind c2
    "下雪中……"
    return

(2)转场效果

  • 1)renpy中已内置了许多转场效果,可以在vscode中使用transition查看内置的转场语句,常用的有:
    • with fade:0.5秒时间,画面逐渐暗淡至全黑,然后0.5秒时间画面从全黑逐渐变亮成新界面。写在需要进行转场效果的图像同级处。常见于场景切换时。
    • with dissolve:0.5秒时间,使用溶解效果从旧界面切到新界面,图像淡入淡出。写在需要进行转场效果的图像同级处。常见于图片切换时。使用函数with Dissolve(0.3)可以指定溶解效果的发生时间,例如此时代表0.3秒内完成溶解效果。
    • with pixellate:0.5秒时间,像素化旧场景,并0.5秒反向像素化至新场景。常见于回忆效果。
    • with moveinright/moveoutleft/moveintop:0.5秒时间,图片从右侧滑动进入/左侧滑动进入/上方滑动进入/下方滑动进入。
    • with zoomin/zoomout:0.5秒时间,镜头放大/镜头缩小切入图片。
label start:
    show c2
    # 配合溶解效果
    with dissolve
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
  • 2)自定义转场:可使用转场函数ImageDissolve(image, time, ramplen=8, reverse=False, time_warp=None, mipmap=None)。
    • 参数image:指定一个图片文件或者图像控制器,使用该图片文件或者图像控制器进行转场。
    • 参数time:溶解效果持续时间。
    • 参数ramplen:步长。必须是一个2的整次幂。默认值是8,数值越大越自然。
    • 参数reverse:若该值为True,黑色像素反而先于白色像素溶解。
    • 参数time_warp:调整时间线的功能函数。
    • 参数mipmap:如果溶解转场会将图片缩小至原尺寸的一半以下,可以将 mipmap 样式特性设置为True。
# 定义转场效果
define mytran = ImageDissolve("images/tran.png", 1.0,128)

label start:
    scene s1
    # 配合溶解效果
    with mytran
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return

  • (1)可以使用标签label before_main_menu来实现在进入主菜单前的Logo展示。若图片配合溶解效果后会出现显示透明底情况,可配合插入一张黑色底图片,在renpy中,支持直接创建一张纯黑色图片,而无需额外准备一张图片。
    • 2026__引擎.Renpy__图像控制.游戏启动Logo
image black:
    "#000"

label before_main_menu:
    scene black
    # 名为logo的图片已放在game/images/logo.jpg
    show logo
    with dissolve
    hide logo
    with dissolve
    return

5.transform

  • (1)使用transform语句,封装位置属性。能够预设一些位置,当一些图片需要使用该位置时,可以使用at语句进行调用。
    • 2026__引擎.Renpy__图像控制
# 创建脚本cimagetrans.rpy
# 若设置参数,后续调用时可修改参数
transform show_role(x=0.5):
    xcenter x
    ycenter 1.1
    zoom 1.0
# 脚本script.rpy
label start:
    # 插入名为c2的图片
    show c2 at show_role
    # 纯显示图片无文本无法进入游戏,故此处插入测试文本
    "内心似乎有些触动"
    return
posted on 2026-10-08 00:44  retreatafter  阅读(15)  评论(0)    收藏  举报