找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6825|回复: 4

[教程] 用Ren'Py引擎,在游戏里实现下雪效果。

[复制链接]
发表于 2017-12-3 15:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 BuErShen 于 2017-12-7 16:25 编辑

要用renpy实现下雪效果,需用 SnowBlossom() 函数实现。此函数在 Sprites (粒子系统) 里,大家可以去翻阅。

使用格式如下:
[RenPy] 纯文本查看 复制代码
image 粒子名 = SnowBlossom("显示图片路径", count=80, xspeed=(10, 50),yspeed=(50, 100),start=10, fast=False,horizontal=False

其他参数:
count :控制出现数量
start:延迟,不会一波涌出。
fast:如果为False,雪花从屏幕边缘出现,而不是中间冒出。
horizontal:如果为False,雪花从屏幕上到下,而不是左到右飘。

下面实现例子:
[RenPy] 纯文本查看 复制代码
#定义一张背景图
image tu = "images/1.png"

#定义3张雪花
image snowA = SnowBlossom("images/snow1.png", count=80, xspeed=(10, 50),yspeed=(50, 100),start=10, fast=False,horizontal=False)
image snowB = SnowBlossom("images/snow2.png", count=90, xspeed=(50, 100),yspeed=(80, 120),start=5, fast=False,horizontal=False)
image snowC = SnowBlossom("images/snow3.png", count=7, xspeed=(15, 50),yspeed=(100, 200),start=2, fast=False,horizontal=False)


# 游戏从这里开始。
label start:

    #先显示背景图
       scene tu ## 全部擦掉,指定新背景图。
   
       show snowA # 显示雪花A
       show snowB # 显示雪花B
    "小雪"
     
    show snowC # 显示雪花C
    "雪变大了"

效果如图:
捕获11.jpg

捕获22.jpg

你也可以一次 show出3张雪花图,实现大雪效果。
[RenPy] 纯文本查看 复制代码
show snowA
show snowB
show snowC
"大雪效果"

你也可是试试其图,像花瓣之类。

示例中,雪花素材下载:
snow.zip (2.32 KB, 下载次数: 38)
发表于 2018-3-19 23:13:25 | 显示全部楼层
响应版主,贡献一段自己写的代码。
实现了六角形雪花下落过程中的旋转。

由于无法上传过大的图片,所以附件只有“snow.png”。snow_big.png和snow_small.png做了一些模糊处理(不做模糊也凑合),全换成snow.png效果也差不多。

[RenPy] 纯文本查看 复制代码
 image snow_big:
    "snow_big.png"
    size (160, 160)
    alpha 0.8
    block:
        rotate 0
        linear 6.0 rotate 360
        repeat
    image snow_midium:
    "snow.png"
    size (80, 80)
    block:
        rotate 0
        linear 3.0 rotate 360
        repeat
    image snow_small:
    "snow_small.png"
    size (40, 40)
    alpha 0.6
    block:
        rotate 0
        linear 2.0 rotate 360
        repeat
    image snow_small_fall = SnowBlossom("snow_small", count=400, border=30, xspeed=(12, 30), yspeed=(60, 120))
    image snow_midium_fall = SnowBlossom("snow_midium", count=60, border=50, xspeed=(20, 50), yspeed=(100, 200))
    image snow_big_fall = SnowBlossom("snow_big", count=10, border=100, xspeed=(24, 60), yspeed=(120, 240))
    #SnowBlossom(d, count=10, border=50, xspeed=(20, 50), yspeed=(100, 200), start=0, fast=False, horizontal=False)
    show snow_small_fall
    show snow_midium_fall
    show snow_big_fall


snow.png
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2018-3-20 12:25:07 | 显示全部楼层
本帖最后由 BuErShen 于 2018-3-21 11:34 编辑
被诅咒的章鱼 发表于 2018-3-19 23:13
响应版主,贡献一段自己写的代码。
实现了六角形雪花下落过程中的旋转。

图片可以直接制作成想要的尺寸,无需采用size调整。
除非有特殊需求,这样可以降低游戏文件大小。
嗯,代码也需调整,注意空格。
[RenPy] 纯文本查看 复制代码
image snow_big:
    "snow_big.png"
    size (160, 160)
    alpha 0.8
    block:
        rotate 0
        linear 6.0 rotate 360
        repeat

image snow_midium:
    "snow.png"
    size (80, 80)
    block:
        rotate 0
        linear 3.0 rotate 360
        repeat

image snow_small:
    "snow_small.png"
    size (40, 40)
    alpha 0.6
    block:
        rotate 0
        linear 2.0 rotate 360
        repeat

image snow_small_fall = SnowBlossom("snow_small", count=400, border=30, xspeed=(12, 30), yspeed=(60, 120))
image snow_midium_fall = SnowBlossom("snow_midium", count=60, border=50, xspeed=(20, 50), yspeed=(100, 200))
image snow_big_fall = SnowBlossom("snow_big", count=10, border=100, xspeed=(24, 60), yspeed=(120, 240))

# 游戏从这里开始。
label start:
    show snow_small_fall
    show snow_midium_fall
    show snow_big_fall
回复 支持 抱歉

使用道具 举报

发表于 2018-3-21 11:54:34 | 显示全部楼层
BuErShen 发表于 2018-3-20 12:25
图片可以直接制作成想要的尺寸,无需采用size调整。
除非有特殊需求,这样可以降低游戏文件大小。
嗯,代 ...

诶?我当时粘进去的代码的确是加了4个空格的……
回复 支持 抱歉

使用道具 举报

发表于 2018-5-16 14:24:24 | 显示全部楼层
大神啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-4-25 22:52 , Processed in 0.067969 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表