仿 Alcot 社的跟随人物移动的对话框实现
简单方法
image dialog:
"#1e1e1e"
size(800,200)
alpha 0.8
label loop(count=0,pos_list=[]):
$ list_len = len(pos_list)-1
show dialog:
ease 1 pos(pos_list[count])
show text "Loop [count]":
alpha 0
xanchor 0
yanchor 0
pos(pos_list[count][0]+20,pos_list[count][1]+20)
pause 0.5
linear 0.5 alpha 1.0
$ narrator.add_history(kind="adv", who=narrator.name, what="Loop [count]")
pause
if count<list_len:
call loop(count=count+1,pos_list=pos_list)
return
label start:
show dialog:
pos(240,500)
with dissolve
pause
$ pos_list = [(40,300),(240,500),(440,300),(240,500)]
call loop(pos_list=pos_list)
pause
return
换个思路
init python:
game_width = 1280
game_height = 720
dialog_width = 800
dialog_height = 200
dialog_default_pos = (game_width/2-dialog_width/2,game_height-dialog_height-20)
class DialogMove(object):
def __init__(self, start_pos=dialog_default_pos, end_pos=dialog_default_pos, start_zoom=(1.0,1.0), end_zoom=(1.0,1.0), speed=2, set_alpha=0.8):
self.st = 0
self.alpha = set_alpha
self.speed = speed
self.start_pos = start_pos
self.end_pos = end_pos
self.start_zoom = start_zoom
self.end_zoom = end_zoom
self.x_delta = float((self.end_pos[0]-self.start_pos[0])*self.speed)
self.y_delta = float((self.end_pos[1]-self.start_pos[1])*self.speed)
self.xzoom_delta = float(