找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 307|回复: 3

[教程] 实现实时按键控制玩家移动教程

[复制链接]
发表于 2024-10-31 20:23:51 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 被诅咒的章鱼 于 2024-11-1 14:04 编辑

现在只做了一个效果,没有优化,以后会更新这个帖子。
视频:


【renpy制作实时按键控制人物移动功能】
script.rpy:

[RenPy] 纯文本查看 复制代码
label start:

    init python:
        
        #0不动 1向右 -1向左
        #0不动 1向下 -1向上

        status = [0,0
        px = 0
        py = 0

        def changeStatus(d,s):
            status[d] = s

        def prt(m):
            print(m)

        def moveright():
            global px
            px += 3
        
        def moveleft():
            global px
            px -= 3
        
        def moveup():
            global py
            py -= 3
        
        def movedown():
            global py
            py += 3

        def update():
            global status
            
            if status[0 == 0:
                pass
            elif status[0 == 1:
                moveright()
            elif status[0 == -1:
                moveleft()
            
            if status[1 == 0:
                pass
            elif status[1 == 1:
                movedown()
            elif status[1 == -1:
                moveup()

    jump walk
    return





customScreen.rpy:

[RenPy] 纯文本查看 复制代码
label walk:
    call screen walk
    return

screen walk:
    timer 0.01 action Show("room")
    timer 0.02 action Show("player")
    timer 0.01 action Show("update")

screen player:
    frame:
        xysize(100,100)
        xpos px
        ypos py
        background Solid("#ff0000")

screen room:
    frame:
        xysize(1920,1080)
        background Solid("#ffffff")

screen update:
    timer 0.02 action [Hide("update"),Function(update),Show("update")]

    key "K_RIGHT" action Function(changeStatus,s=1,d=0)
    key "keyup_K_RIGHT" action Function(changeStatus,s=0,d=0)

    key "K_LEFT" action Function(changeStatus,s=2,d=0)
    key "keyup_K_LEFT" action Function(changeStatus,s=0,d=0)

    key "K_DOWN" action Function(changeStatus,s=1,d=1)
    key "keyup_K_DOWN" action Function(changeStatus,s=0,d=1)

    key "K_UP" action Function(changeStatus,s=2,d=1)
    key "keyup_K_UP" action Function(changeStatus,s=0,d=1)







评分

参与人数 1干货 +1 收起 理由
ZYKsslm + 1 鼓励原创!

查看全部评分

发表于 2024-10-31 21:22:51 | 显示全部楼层
请善用论坛的“代码”功能……直接将vscode内的代码粘贴进论坛不仅不方便查阅学习,更不方便其他人拷贝试运行。
其次,这些代码确实可优化空间很多,完全可以只使用一个screen加一个def来实现,属实是绕了一大圈()
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2024-10-31 22:18:36 | 显示全部楼层
烈林凤 发表于 2024-10-31 21:22
请善用论坛的“代码”功能……直接将vscode内的代码粘贴进论坛不仅不方便查阅学习,更不方便其他人拷贝试运 ...

好滴
用多个screen是想要试着拓展一下做更多功能
回复 支持 抱歉

使用道具 举报

发表于 2024-11-1 22:22:14 | 显示全部楼层
思路可以,但还是推荐去学习一下CDD,在screen中处理逻辑会导致性能下降
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 00:13 , Processed in 0.139775 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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