本节目录
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语句配合挂点(或指明坐标)来设置多张图像。
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数值]来按比例调整图片透明度。
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在不改变图片大小的前提下进行旋转。
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度为例:
image c2:
# game文件夹下到图片文件的完整路径
"/images/c2.jpg"
# 3秒内旋转360度
linear 3 rotate 360
label start:
show c2
# 纯显示图片无文本无法进入游戏,故此处插入测试文本
"内心似乎有些触动"
return
- 3)缓动函数:使用
ease [持续时间 秒] [动画效果]语句实现,以图片3秒内从左侧移动到右侧为例:
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:不断重复定义的动画效果,例如:
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
4.游戏启动Logo
- (1)可以使用标签
label before_main_menu来实现在进入主菜单前的Logo展示。若图片配合溶解效果后会出现显示透明底情况,可配合插入一张黑色底图片,在renpy中,支持直接创建一张纯黑色图片,而无需额外准备一张图片。
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语句进行调用。
# 创建脚本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













浙公网安备 33010602011771号