设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 74|回复: 0

[转载发布] Animated busts and picture based animations.

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    7959

    主题

    864

    回帖

    3万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    29925
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    38778

    灌水之王

    发表于 前天 09:13 | 显示全部楼层 |阅读模式


    Hi everyone!
    This small plugin was made to handle animated busts, but can be generalized to make picture based animations.

    Features:

    • Create picture based animations and synchronize them to the message window, for easy speaking animations.
    • Any number of frames supported.
    • Customizable frame rate.
    • For out of message use: set the number of times the animation runs before pausing, or the time in between animation loops.
    • Text codes to set, start, synchronize and pause animations directly from within the message window.
    How to use:
    The video above, created by @Rhino explains all the features. You can also find all the possible actions within the help file of the plugin.
    Simply download the plugin, name it whatever, save as a .js file and import it in your project. There are no parameters to set.
    Spoiler'd below: the help file of the plugin.
    Spoiler                Code:       
    1. * ===================================================================
    2. * Animation setup:
    3. * ===================================================================
    4. * First, setup the pictures using the event commands.
    5. * Then use the following script call:
    6. * $gameScreen.picture(pictureId).setAnim([array],interval);
    7. * Replace array by the file names without the extension, surrounded by "" and
    8. * separated by ",".
    9. * Ex: ["mouth_closed","mouth_1","mouth_2","mouth_3"]
    10. * These will be, in order, the pictures displayed for the animations.
    11. * The first picture will be used when the animation is paused.
    12. *
    13. * Then replace interval by a number, this will be the number of frames
    14. * between image changes.
    15. * Ex: 5
    16. *
    17. * Ex: $gameScreen.picture(2).setAnim(["mouth_closed","mouth_1","mouth_2","mouth_3"],5)
    18. * This will cause the picture to loop between the frames you set in the array
    19. * until told to stop.
    20. *
    21. * ===================================================================
    22. * Freezing an animation
    23. * ===================================================================
    24. * You can tell a picture to stop looping by using:
    25. * $gameScreen.picture(pictureId).freeze();
    26. * It will set the picture to the first image in the list and stop it from looping.
    27. * Notice: when synching the animation to a message, it will freeze and unfreeze the
    28. * animation automatically when the message pauses. So you have to remove the animation
    29. * if you don't want it synching with a message, not freeze it.
    30. * This command is for out of message use.
    31. *
    32. * You can tell a picture to begin looping again by using:
    33. * $gameScreen.picture(pictureId).unfreeze();
    34. * This will make the picture start looping again, starting at the first frame.
    35. * Again, same disclaimer as for the freeze command: intended for out of message use.
    36. *
    37. * ===================================================================
    38. * Synchronizing an animation with a message box
    39. * ===================================================================
    40. * In order to synch up a picture looping animation to a message window use:
    41. * $gameMessage.setAnim(pictureId)
    42. *
    43. * Ex: $gameMessage.setAnim(2)
    44. * This will cause the picture to synch up its looping animation with the message
    45. * window: it will loop while text is writing, stop for pauses and between windows.
    46. * Using fast forward will make it skip the animation altogether.
    47. *
    48. * If you want a picture to no longer synch up with the message window, use:
    49. * $gameMessage.removeAnim(pictureId)
    50. *
    51. * Ex: $gameMessage.removeAnim(2)
    52. *
    53. * ===================================================================
    54. * Frozen or message end picture outside of animation loop
    55. * ===================================================================
    56. * By default the plugin will use the first image in the array as the frozen or
    57. * message end picture. If you would like to define a frozen picture outside of
    58. * the loop you can use the following command:
    59. * $gameScreen.picture(pictureId).setFrozenBmp(filename);
    60. *
    61. * Ex: $gameScreen.picture(2).setFrozenBmp("mouth_closed")
    62. *
    63. * If you would like to remove a frozen picture and start using the first picture
    64. * of the loop again, use the following command:
    65. *
    66. * $gameScreen.picture(pictureId).removeFrozenBmp()
    67. *
    68. * Ex: $gameScreen.picture(2).removeFrozenBmp()
    69. * ===================================================================
    70. * Wait time in between animation loops:
    71. * ===================================================================
    72. * If you want to pause the picture in between loops, use the following:
    73. * $gameScreen.picture(pictureId).setLoopInterval(number)
    74. *
    75. * Ex: $gameScreen.picture(2).setLoopInterval(60)
    76. * This will make the picture wait 60 frames before each animation loop.
    77. *
    78. * If you want to remove the wait between loops, use:
    79. * $gameScreen.picture(pictureId).removeLoopInterval();
    80. *
    81. * Ex: $gameScreen.picture(2).removeLoopInterval();
    82. *
    83. * Both of these commands are intended for out of message use.
    84. *
    85. * ===================================================================
    86. * Run animation loop only X times:
    87. * ===================================================================
    88. * If you'd like the animation loop to only run on certain amount of
    89. * times, use:
    90. * $gameScreen.picture(pictureId).setLoopTimes(number)
    91. *
    92. * Ex: $gameScreen.picture(2).setLoopTimes(5)
    93. * This will cause the picture to loop 5 times and them freeze itself,
    94. * until the loop times are removed or set again.
    95. *
    96. * If you want to remiove the limitation, use:
    97. * $gameScreen.picture(pictureId).removeLoopTimes();
    98. *
    99. * Ex: $gameScreen.picture(2).removeLoopTimes();
    100. *
    101. * Both of these commands are intended for out of message use.
    102. *
    103. * ===================================================================
    104. * Text codes:
    105. * ===================================================================
    106. * This will also add several escape codes to use with message boxes:
    107. * \fa[pictureId] this will freeze the target picture animation. Again, if the animation
    108. * is synched it won't have any effect.
    109. *
    110. * \ufa[pictureId] this will unfreeze the target picture animation. Just as above,
    111. * if the animation is synched it won't have any effect.
    112. *
    113. * \da[pictureId] this will desynchronise the target picture animation with the
    114. * message window and automatically freeze it. Unfreeze it after if you'd rather
    115. * it kept running.
    116. *
    117. * \sa[pictureId] this will synchronize the target picture animation with the
    118. * message window.
    119. *
    120. * \ca[variableId] this will create an animation, you must have a picture already shown.
    121. * First you must setup a variable using the control variable: script command
    122. * the following way:
    123. * Control variables: script: [id,[spriteArray],interval,frozenBmp*,loopInterval*,loopTimes*].
    124. * Replace id by the picture id you want to animate.
    125. * Replace sprite array by the array of sprite names.
    126. * Replace interval by a number.
    127. * frozenBmp can be omitted, if it is present it will set the new animation to use
    128. * the file name you replace frozenBmp by as its frozen frame.
    129. * loopInterval can be omitted but you must provide a frozenBmp to be able to use it
    130. * it will set a wait time between loops, replace it with a number.
    131. * loopTimes can be omitted but you must provide a  frozenBmp and a loopInterval to
    132. * be able to use it. Replace it with a number, this will be the number of times the
    133. * animation will repeat.
    134. *
    135. * Ex: Control variables: script:[1,["mouth_closed","mouth_1","mouth_2","mouth_3"],5,"mouth_frozen"];
    136. * Then in the message use \ca[variableId], replacing variableId by the id of the
    137. * variable you just used.
    138. * So if you used variable 1, use \ca[1].
    139. * This will start the animation on target picture (1 here) using the sprites in the array,
    140. * and the interval there too, when the message reaches that point.
    141. * It will also synchronize it automatically.
    复制代码






    Terms of use:
    They are detailed in the plugin file for reference, pasted here:
                    Code:       
    1. // Free for commercial and non commercial use, credits required: any of
    2. // Astfgl/Astfgl (Pierre MATEO)/ Pierre MATEO.
    3. // Edits and reposts allowed, as long as it is kept under the same terms of use.
    4. // Do not remove this header, do not claim as your own.
    复制代码


    Download:here on pastebin.

    Additional ressources:
    @Rhino was kind enough to draw mouth animations for all the standard RTP Sci Fi actors busts. You can find them showcased on the youtube video above.
    You can download the ressources on her google drive here. Be sure to credit her if using those animations!
    If you don't want to watch the video, here is a gif sample:
    Spoiler






    Credits:

    • Sample pictures and mouth animations created by Rhino.
    • Youtube video created by Rhino.
    • Plugin created by myself.
    • Original request thread, by Rhino, here.
    And that's all for today. Good day, and happy making!


    本贴来自国际rpgmaker官方论坛作者:Astfgl66处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/animated-busts-and-picture-based-animations.79700/

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-1 00:29 , Processed in 0.065221 second(s), 52 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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