Animation and Transformation Language (ATL) link
Animation and Transformation Language (ATL) では表示する displayable を選択してスクリーンに配置し、 回転やズーム、アルファ変更のような transform を適用する高度な手段を提供します。これらは時間の経過やイベントに対応して変化させられます。
Python で ATL transform に相当するのは Transform()
displayable です。ATL transform はプログラム的には作成できません。
Ren'Py スクリプトのステートメント link
ATL コードは 3 つの Ren'Py スクリプトステートメントの一部として使えます。
transform ステートメント link
transform
ステートメントは、at 節に指定する ATL transform を作成します。transform ステートメントの構文は次の通りです。
atl_transform ::= "transform"qualname
( "("parameters
")" )? ":"atl_block
transform ステートメントは、初期化時に実行されなければなりません。 init
ブロックの外にあると、自動的に優先度0の init
ブロック内に配置されます。transform にはパラメーターリストを指定出来、その場合は呼び出し時に提供されなければなりません。右側のパラメーターのデフォルトの値は "=" と値を追加して指定できます( 例 "transform a (b, c=0):") 。
qualname はドット区切りの Python 識別子でなければなりません。ATL ブロックによって作成された transform はこの名前に関連付けされます。指定すれば指定した store 内で関連付けられます。
transform left_to_right:
xalign 0.0
linear 2.0 xalign 1.0
repeat
transform ariana.left:
xcenter .3
image ステートメントの ATL ブロック link
ATL を使う第二の方法は、 image
ステートメントの ATL ブロックとして使うことです。これは画像名を指定した transform に関連付けします。この transform にパラメーターを与える方法はないので、この使い道はアニメーションの定義ぐらいです。image ステートメントに ATL ブロックを加える構文は次のとおりです。 :
atl_image ::= "image"image_name
":"atl_block
image eileen animated:
"eileen_happy.png"
pause 1.0
"eileen_vhappy.png"
pause 1.0
repeat
scene ステートメントおよび show ステートメントの ATL ブロック link
ATL を使う最後の方法は、 scene
ステートメントや show
ステートメントに含めることです。これは、表示される画像を ATL transform でラップします。
atl_scene ::=stmt_scene
":"atl_block
atl_show ::=stmt_show
":"atl_block
scene bg washington:
zoom 2.0
show eileen happy:
xalign 1.0
ATL 構文および語義 link
あるステートメントの ATL ブロックは、そのステートメントより深いインデント上に揃えた 1 行以上の論理行からなります。ATL ブロックの各論理行は、1 つ以上の ATL ステートメントを含まなければなりません。
ATL ステートメントには 2 種類あります。 simple ステートメントと complex ステートメントです。 simple ステートメントは ATL ブロックを受け取りません。1 行の論理行には、カンマで区切られた 1 つ以上の ATL ステートメントを含めます。 complex ステートメントにはブロックがあり、行にそれ以外を置くことはできません。 complex ステートメントの最初の行は必ずコロン :
で終わります。
デフォルトでは、ブロック中のステートメントは書いてある順に最初のステートメントから実行されます。実行は、ブロックの終端に達したときに終わります。time ステートメントはこれを該当の節で説明する通りに変更します。
ブロックの実行は、ブロックの全てのステートメントが終了したときに終わります。
ATL ステートメントが式の評価を要求するなら、その式は transform が最初に実行されたときに評価されます(例えば、show
ステートメントやその transform をスクリーンの一部として表示したとき)。
ATL ステートメント link
以下が ATL ステートメントです。
補間ステートメント link
補間ステートメントは、ATL が transform を制御する主な方法です。
atl_properties ::= (property
simple_expression
( "knot"simple_expression
)* | "clockwise" | "counterclockwise" | "circles" simple_expression | simple_expression )*
atl_interp ::= (warper
simple_expression
| "warp"simple_expression
simple_expression
)?atl_properties
| (warper
simple_expression
| "warp"simple_expression
simple_expression
)? ":"atl_properties
補間ステートメントの最初の部分で補間をタイムワープする関数を選びます(これは、線形時間から非線形時間への変換関数です。ワーパーについての詳細は ワーパー を参照してください。)。 それには ATL に登録されたワーパーの名前を指定するか、予約語「 warp 」に続けて関数を指定する式を与えてください。どちらの場合でも補間にかける時間の秒数を続けます。
transform builtin_warper:
xpos 0
ease 5 xpos 520
init python:
def my_warper(t):
return t**4.4
define my_warpers = [my_warper]
transform accessed_as_function:
xpos 0
warp my_warpers[0] 5 xpos 520
warp my_warper 3 xpos 100
ワープ関数が指定されなければ、補間は瞬間的なものになります。 そうでなければ指定された時間、少なくとも1フレーム持続します。
このワーパーと補間にかける時間は、完了率を計算するのに使われます。補間にかかった時間を補間にかける時間で割った値をワーパーに渡し、ワーパーから返された結果が完了率となります。
補間ステートメントには続いて、いくつかの他の節を加えられます。プロパティーと値があるとき、その値はステートメントの終わりにそのプロパティーがとる値です。この値には数種類の経過で到達します。 :
値に1つ以上の knot が続くと、スプラインモーションが使用されます。そのプロパティーの補間開始時の値から始まって指定した値で終わり、knot を使用してスプラインを制御します。1つの knot には2次曲線が使用され、 2つにはベジェ曲線、3つ以上の knot にはキャットムル-ロム スプラインが使用されます。前者2つでは、 knot はすべて(しばしば描画される経路外となる)制御nodeです。キャットムル-ロム スプラインでは、最初と最後の knot が制御nodeで他の knot は通過点になります。
補間ステートメントに「 clockwise 」または「 counterclockwise 」が含まれると、後述する円運動が使われます。
そうでなければ、値は開始から終了まで完了率を使って線形補間されます。
単純式があれば、その評価はワーパーもスプラインも円運動も含まない一つの補間ステートメントを持つ transform でなければなりません。その transform から所得されたプロパティーは、このステートメントに含まれていたかのように処理されます。
ワーパーにはコロン(:)が続く場合もあります。その場合、上述の利用可能な節が1行以上続きます。これによりある ATL 補間を複数行のプロパティーに適用できます。
補間の例です
show logo base:
# Show the logo at the upper right side of the screen.
xalign 1.0 yalign 0.0
# Take 1.0 seconds to move things back to the left.
linear 1.0 xalign 0.0
# Take 1.0 seconds to move things to the location specified in the
# truecenter transform. Use the ease warper to do this.
ease 1.0 truecenter
# Just pause for a second.
pause 1.0
# Set the location to circle around.
anchor (0.5, 0.5)
# Use circular motion to bring us to spiral out to the top of
# the screen. Take 2 seconds to do so.
linear 2.0 yalign 0.0 clockwise circles 3
# Use a spline motion to move us around the screen.
linear 2.0 align (0.5, 1.0) knot (0.0, .33) knot (1.0, .66)
# Changes xalign and yalign at the same time.
linear 2.0 xalign 1.0 yalign 1.0
# The same thing, using a block.
linear 2.0:
xalign 1.0
yalign 1.0
重要な特例は pause ワーパーで、続けて時間だけを書いてその時間 ATL の実行を休止します。
time ステートメント link
time
ステートメントは simple ステートメントです。このステートメントが含まれるブロックが実行され始めてからの時間を秒単位で表す simple_expression
を 1 つ含みます。
atl_time ::= "time" simple_expression
このステートメントで指定した時間が経過すると、後に続くステートメントの実行が始まります。この制御の移行は前のステートメントが実行中であってさえ行われ、先行するステートメントは即座に終了します。
time ステートメントには暗黙に無限時間の pause ステートメントが前置されます。つまり、time ステートメントにたどり着いたときに制御が別のところにあれば、time ステートメントは制御を得るまで待ちます。
一つのブロックに複数の time ステートメントがある場合、それらは厳密に時間の経過順でなくてはなりません。
image backgrounds:
"bg band"
time 2.0
"bg whitehouse"
time 4.0
"bg washington"
式 ステートメント link
式 ステートメントは、単純式で始まる simple ステートメントです。with 節で 2 つめの単純式も続けられます。
atl_expression ::=simple_expression
("with"simple_expression
)?
最初の単純式は、以下の 3 つのいずれかに評価されるものにできます :
ATL transform であり、 (transform や トランジションとして呼び出されるこ、または child 引数で呼び出されることで) その ATL transform に child が渡されていなければ、その ATL transform はその式の位置に含まれます。
with
節は無視されます。整数または浮動小数点数の場合、 pause が実行される秒数になります。
with
節は無視されます。これら以外の場合、式は displayable と解釈されます。この displayable はこの節が実行されたときにその transform の子を置き換えるので、アニメーションに便利です。
with
節があると、第二の式はトランジションと評価され、そのトランジションが前後の displayable に適用されます。
transform move_right:
linear 1.0 xalign 1.0
image atl example:
# Display logo_base.png
"logo_base.png"
# Pause for 1.0 seconds.
1.0
# Show logo_bw.png, with a dissolve.
"logo_bw.png" with Dissolve(0.5, alpha=True)
# Run the move_right transform.
move_right
pass ステートメント link
atl_pass ::= "pass"
pass
ステートメントは、何も起こさない simple ステートメントです。これは、ステートメントを分割したいときに使えます。例えば、2 組の choice ステートメントが連続するのではなく分かれている方が望ましいときです。
Repeat ステートメント link
repeat
ステートメントは、そのブロックの実行を再び最初から始める simple ステートメントです。式があれば、その評価がブロックの実行回数を指定する整数になります(ですから、repeat 2
で終わるステートメントは最高で 2 回実行されます)。
atl_repeat ::= "repeat" (simple_expression
)?
repeat ステートメントは、必ずブロックの最後になければなりません。
show logo base:
xalign 0.0
linear 1.0 xalign 1.0
linear 1.0 xalign 0.0
repeat
Block ステートメント link
block ステートメントは、ATL ステートメントのブロックを含む complex ステートメントです。繰り返すステートメントをグループ化するのに使えます。
atl_block_stmt ::= "block" ":"
atl_block
show logo base:
alpha 0.0 xalign 0.0 yalign 0.0
linear 1.0 alpha 1.0
block:
linear 1.0 xalign 1.0
linear 1.0 xalign 0.0
repeat
choice ステートメント link
choice
ステートメントは、ランダムな選択肢群の 1 つを定義する complex ステートメントです。Ren'Py はその選択肢群から 1 つ選び、対応する ATL ブロックを実行します。その後、最後の選択肢の後から実行を続けます。
atl_choice ::= "choice" (simple_expression
)? ":"atl_block
ブロック内の連続する choice ステートメントは積極的にグループ化されます。simple_expression が与えられているなら、それはそのブロックに浮動小数点数で指定するウェイトになり、なければ 1.0 になります。
image eileen random:
choice:
"eileen happy"
choice:
"eileen vhappy"
choice:
"eileen concerned"
pause 1.0
repeat
Parallel ステートメント link
parallel
ステートメントを使用して並行して実行される ATL ブロック群を定義出来ます。
atl_parallel ::= "parallel" ":"
atl_block
ブロック内の連続する parallel ステートメントは 積極的にグループ化されます。全ての parallel ステートメントのブロックが同時進行は実行されます。parallel ステートメントは、最後のブロックが終了したときに終了します。
群中のブロックは、それぞれ独立したもので、かつ異なるプロパティーを操作するものでなければなりません。2 つのブロックが同じプロパティーを変更するときの結果は未定義です。
show logo base:
parallel:
xalign 0.0
linear 1.3 xalign 1.0
linear 1.3 xalign 0.0
repeat
parallel:
yalign 0.0
linear 1.6 yalign 1.0
linear 1.6 yalign 0.0
repeat
Event ステートメント link
event ステートメントは指定した名前のイベントを引き起こす simple ステートメントです。
atl_event ::= "event" name
あるブロック内でイベントが引き起こされたとき、指定した名前に対するイベントハンドラがそのブロックに存在しないかチェックされます。存在すれば、制御はイベントハンドラに移ります。存在しなければ、イベントは外側のイベントハンドラに伝播します。
On ステートメント link
on ステートメントはイベントハンドラを定義する complex ステートメントです。on ステートメントは一つのステートメントに積極的にグループ化されます。 onステートメントでは、1つまたはコンマで区切られた複数のイベント名を扱えます。
atl_on ::= "on"name
[ ","name
] * ":"atl_block
on ステートメントは、イベントを処理するのに使います。イベントが処理されるとき、他のイベントの処理は終了し、新しいイベントの処理が即座に始まります。他のイベントが起こることなくイベントハンドラが終了したとき(すでに default イベントを処理していたのでなければ)、 default イベントが引き起こされます。
on ステートメントの実行は自然には終わりません(しかし、time ステートメントや外側のイベントハンドラによって終了され得ます)。
show logo base:
on show:
alpha 0.0
linear .5 alpha 1.0
on hide:
linear .5 alpha 0.0
transform pulse_button:
on hover, idle:
linear .25 zoom 1.25
linear .25 zoom 1.0
Contains ステートメント link
contains
ステートメントは、この ATL transform に含まれる displayable ( transform の子 transform ) を設定します。contains ステートメントには 2 種類あります。
contains 式は式を受け取り、その式を transform の子 transform として設定します。これは ATL transform に第2の ATL transform を含みたいが組み込みたくはないときに便利です。
atl_contains ::= "contains" expression
transform an_animation:
"1.png"
pause 2
"2.png"
pause 2
repeat
image move_an_animation:
contains an_animation
# If we didn't use contains, we'd still be looping and
# would never reach here.
xalign 0.0
linear 1.0 yalign 1.0
contains ブロックではこの ATL transform の子 transform として使われる ATL ブロックを定義できます。連続する contains ブロックステートメントは積極的にグループ化され、 Fixed()
でラップされ、この transform の子 transform として設定されます。全ての parallel ステートメントのブロックが同時進行で実行されます。
atl_counts ::= "contains" ":"
それぞれのブロックで使用する displayable を定義していなければならず、そうでなければ例外が発生します。contains ステートメントは、子が完了するのを待たずにすぐに実行します。このステートメントは引数を子に簡単に渡せるようにするシンタックスシュガーに近いです。
image test double:
contains:
"logo.png"
xalign 0.0
linear 1.0 xalign 1.0
repeat
contains:
"logo.png"
xalign 1.0
linear 1.0 xalign 0.0
repeat
Function ステートメント link
function
ステートメントで、ATL に ATL プロパティーを制御する Python 関数を使わせられます。
atl_function ::= "function" expression
この関数の定義は Transform()
で使われるのと同じです :
第一引数は transform オブジェクトです。このオブジェクトに transform プロパティーを設定できます。
第二引数は出現時間軸で、関数が実行され始めてからの秒数です。
第三引数はアニメーション時間軸で、同じタグのものがスクリーン上にある秒数です。
この関数の結果が数の場合、その秒数が経過するとまた呼び出されます(0 秒なら、関数はできるだけ早く呼び出されます)。 関数が None を返したら、制御は次の ATL ステートメントに渡されます。
この関数は第一引数の Transform オブジェクトの変更の他には副作用を持つべきではなく、予測のためにいつどの数値で呼び出されるか分かりません。
function
は transform プロパティーではないので、 Transform()
の function パラメータと完全に同じ意味ではないことに注意してください。
init python:
def slide_function(trans, st, at):
if st > 1.0:
trans.xalign = 1.0
return None
else:
trans.xalign = st
return 0
label start:
show logo base:
function slide_function
pause 1.0
repeat
Animation ステートメント link
animation
ステートメントは ATL ブロックの最初のステートメントでなくてはならず、 Ren'Py にこのステートメントがアニメーション時間軸に従うことを通知します。timebase.
atl_animation ::= "animation"
通常の出現時間軸に対して、アニメーション時間軸は同じタグの画像やスクリーンが表示されたときに開始します。これは通常おなじ時間軸で別の物で置き換えられる画像があるときに使用します。例
image eileen happy moving:
animation
"eileen happy"
xalign 0.0
linear 5.0 xalign 1.0
repeat
image eileen vhappy moving:
animation
"eileen vhappy"
xalign 0.0
linear 5.0 xalign 1.0
repeat
label start:
show eileen happy moving
pause
show eileen vhappy moving
pause
この例では Eileen は最初の pause 終了時に表示を変えますが、その位置は両方のアニメーションで共有のアニメーション時間軸を持ち、同じ場所にスプライトを配置するため変わりません。アニメーションステートメントがないと、その位置はプレイヤークリック時にリセットされます。
ワーパー link
ワーパーは、補間ステートメントが経過したとみなす時間を変更する関数です。デフォルトで以下のワーパーが定義されています。これらは t から t' への関数として定義されています。ここで t および t' は 0.0 から 1.0 の浮動小数点数です(ステートメントの持続時間が 0 なら、t は実行時に 1.0 になります)。 t' は0.0 から始まり、 1.0 で終るべきですが、それ以上でもそれ以下でも可能です。
pause
一時停止し、新しい値に飛びます。
t == 1.0
ならt' = 1.0
, そうでなければ `` t' = 0.0`` です。linear
線形補間です。
t' = t
ease
最初は遅く、徐々に加速し、それから徐々減速します。
t' = .5 - math.cos(math.pi * t) / 2.0
easein
最初は速く、徐々に減速します。
t' = math.cos((1.0 - t) * math.pi / 2.0)
easeout
最初は遅く、徐々に加速します。
t' = 1.0 - math.cos(t * math.pi / 2.0)
さらに Robert Penner の easing 関数の殆どがサポートされます。上記と名前を合せるため、関数はリネームされました。これらの基本関数のグラフはこちらで閲覧出来ます。 http://www.easings.net/.
Ren'Py Name |
easings.net Name |
---|---|
ease_back |
easeInOut_back |
ease_bounce |
easeInOut_bounce |
ease_circ |
easeInOut_circ |
ease_cubic |
easeInOut_cubic |
ease_elastic |
easeInOut_elastic |
ease_expo |
easeInOut_expo |
ease_quad |
easeInOut_quad |
ease_quart |
easeInOut_quart |
ease_quint |
easeInOut_quint |
easein_back |
easeOut_back |
easein_bounce |
easeOut_bounce |
easein_circ |
easeOut_circ |
easein_cubic |
easeOut_cubic |
easein_elastic |
easeOut_elastic |
easein_expo |
easeOut_expo |
easein_quad |
easeOut_quad |
easein_quart |
easeOut_quart |
easein_quint |
easeOut_quint |
easeout_back |
easeIn_back |
easeout_bounce |
easeIn_bounce |
easeout_circ |
easeIn_circ |
easeout_cubic |
easeIn_cubic |
easeout_elastic |
easeIn_elastic |
easeout_expo |
easeIn_expo |
easeout_quad |
easeIn_quad |
easeout_quart |
easeIn_quart |
easeout_quint |
easeIn_quint |
これらのワーパーは上記のリストの関数を含む読み込み専用モジュールの _warper
からアクセス可能です。 Dissolve()
のようなタイムワープ関数を受け取るものに対して有用であり次のように使えます。
with Dissolve(1, time_warp=_warper.easein_quad)
python early ブロック内で renpy.atl_warper
デコレーターを使って新しいワーパーが定義できます。これはワーパーを使うファイルの前に読み込まれるファイル内に書きこまれていなければなりません。コードは次のようになります
python early hide:
@renpy.atl_warper
def linear(t):
return t
transform プロパティーの一覧 link
以下の transform プロパティーが存在します。
position として型(Type)を指定する場合、 相対要素はそれを含む領域 (pos
) または displayable (anchor
) に対する割合として解釈されます。
なお、全てのプロパティーが独立しているわけではありません。例えば、 xalign
と xpos
はどちらも同じ元となるデータを更新します。parallel ステートメントでは、1つ以上のブロックが同じデータを共有するプロパティーを変更するべきではありません。 angle および radius プロパティーは、水平位置と垂直位置の両方を設定します。
配置 link
- pos link
- Type:
(position, position)
- Default:
(0, 0)
これを含む領域の左上隅に対する位置です。
- xpos link
- Type:
position
- Default:
0
これを含む領域の左端に対する水平位置です。
- ypos link
- Type:
position
- Default:
0
これを含む領域の上端に対する垂直位置です。
- anchor link
- Type:
(position, position)
- Default:
(0, 0)
displayable の左上隅に対するアンカー位置です。
- xanchor link
- Type:
position
- Default:
0
displayable の左端に対する水平アンカー位置です。
- yanchor link
- Type:
position
- Default:
0
displayable の上端に対する垂直アンカー位置です。
- align link
- Type:
(float, float)
- Default:
(0.0, 0.0)
pos と anchor を同じ値にするのに相当します。
- xalign link
- Type:
float
- Default:
0.0
xpos および xanchor をこの値に設定するのに相当します。
- yalign link
- Type:
float
- Default:
0.0
ypos および yanchor をこの値に設定するのに相当します。
- offset link
- Type:
(absolute, absolute)
- Default:
(0, 0)
displayable の縦横方向のオフセットのピクセル数です。正の数は下または右向きのオフセットになります。
- xoffset link
- Type:
absolute
- Default:
0
displayable の水平方向のオフセットのピクセル数です。正の数の右向きのオフセットです。
- yoffset link
- Type:
absolute
- Default:
0
displayable の縦方向のオフセットのピクセル数です。正の数は下向きのオフセットです。
- xycenter link
- Type:
(position, position)
- Default:
(0.0, 0.0)
xpos をこのプロパティーの値に、xanchor を 0.5 に設定するのに相当します。
- xcenter link
- Type:
position
- Default:
0.0
xpos をこのプロパティーの値に、xanchor を 0.5 に設定するのに相当します。
- ycenter link
- Type:
position
- Default:
0.0
ypos をこのプロパティーの値に、ranchor を 0.5 に設定するのに相当しますえ
- subpixel link
- Type:
boolean
- Default:
False
True の場合、サブピクセル(訳注: 1ピクセル以下での描画)による位置決めを使用して子は配置されます。
Subpixel によるポジションニングは複数のピクセルに渡って描画され、特定の1つのピクセルには描画されない(透明度を含む)色に影響を与えます。subpixel ポジションは (通常) 移動と組み合わせて使用され、その画像はその端が画面の可視領域にあれば移動方向に透明な境界をもつようになります。
例えばあるキャラクターの立ち絵が水平に移動しているなら、左右に透明な境界線を持つことになります。背景に対するパンニングでは可視領域を拡張して端が見えないのでこれらは起こりません。
回転 link
- rotate link
- Type:
float または None
- Default:
None
None なら、回転は起こりません。そうでなければ、画像はこの角度だけ時計回りに回転します。displayable を回転すると、rotate_pad の設定に従ってリサイズされます。 xanchor および yanchor が 0.5 でなければ、これによって位置取りが変わることがあります。
- rotate_pad link
- Type:
boolean
- Default:
True
True の場合、回転された displayable の幅と高さが、元の幅と高さの斜辺と同じになるように埋め込まれます。これは transform が中身を回転させてもサイズが変わらないことを保証します。 False の場合、 transform は transform された displayable を含む最小限のサイズになります。これは固定回転に向いています。
- transform_anchor link
- Type:
boolean
- Default:
False
True なら anchor の位置は切り取られた子に配置され、子の transform とともに拡大や回転します。つまりこれは anchor をそれを中心に子が回転したり、サイズが変更したりする点にします。
ズームと反転 link
- zoom link
- Type:
float
- Default:
1.0
displayable を指定した係数倍ズームします。
- xzoom link
- Type:
float
- Default:
1.0
displayable を指定した係数倍水平にズームします。負の値は画像を水平に反転します。
- yzoom link
- Type:
float
- Default:
1.0
displayable を指定した係数倍垂直にズームします。負の値は画像を垂直に反転します。
ピクセルエフェクト link
- nearest link
- Type:
boolean
- Default:
None
True なら displayable とその子は最近傍補間を使用して描画されます。 False なら displayable とその子は双一次補間で描画されます。None なら親の設定から引き継がれるか、
config.nearest_neighbor
が使用されます。これはデフォルトでは False です。
- alpha link
- Type:
float
- Default:
1.0
displayable の不透明度を制御します。
alpha transform は transform の子で構成される各画像に独立して適用されます。これはキャラクターとの距離を考慮してキャラクターを見るときのように、子が重なり合っていると望まぬ結果になるかもしれません。
Flatten()
displayable はこれらの問題の手助けになるでしょう。
- additive link
- Type:
float
- Default:
0.0
Ren'Py が加算合成をどう処理するかを制御します。 1.0 なら Ren'Py は ADD 処理を使用し、 0.0 なら OVER 処理を使用して描画します。
Additive blending は transform のそれぞれの子に独立して処理されます。
完全な加算合成は対象のアルファチャンネルを置き換えず、加算合成された画像は不透明な部分に直接描画されていなければ見えないでしょう ( viewport,
Flatten()
,Frame()
や一部のトランジションのような複雑な処理は加算合成で問題を起こすかもしれません )。
- matrixcolor link
- Type:
None, Matrix または MatrixColor
- Default:
None
None またはこの transform の子が描画するすべての色を置き換えるプロパティーの値です。補間は MatrixColor が使用されたときのみサポートされます。 MatrixColor は構造的に同じです。詳細は matricolor を参照してください。
- blur link
- Type:
None or float
- Default:
None
displayable の境界まで blur ピクセル分この transform の子をブラーします。ブラー方法の正確な詳細は Ren'Py のバージョンで変更するかもしれません。また、特に画像のブラーが変化していくときはブラーが人工的に感じられるかもしれません。
極座標配置 link
- around link
- Type:
(position, position)
- Default:
(0.0, 0.0)
これを含む領域の左上端に対する (tpref:angle と
radius
から算出される) 極座標の開始位置を指定します。この2つの合計が最終的なpos
になります。
- angle link
- Type:
float
極座標で指定する位置の角度成分を指定します。これは 0 がスクリーンの上、90 が右になる度数で測定されます。
Ren'Py はこの角度を0度以上360度未満の間に固定します。この範囲外の値が設定された場合、この範囲内の同等の角度に設定されてから使用されます。(これを-10に設定することは、350に設定することと同じです)。
- radius link
- Type:
position
極座標で指定される位置の半径成分です。
浮動小数ならば、その transform に対して利用可能な幅と高さの小さい方にスケーリングされます。
極座標配置でのアンカー link
注釈
極座標を使用してアンカーの配置もできますが、単に anchor
を (0.5, 0.5) に設定して、displayable の中心に配置する方が便利な場合が多いです。
- anchoraround link
- Type:
(position, position)
これは、 displayable の左上隅を基準にした始点を指定し、そこから (
anchorangle
とanchorradius
から計算される) 極ベクトルが描画されます。この 2 つの合計により、最終的なanchor
が得られます。
- anchorangle link
- Type:
(float)
極座標におけるアンカー位置の角度成分を指定します。これは 0 が上、90 が右になる度数で指定されます。
Ren'Py はこの角度を0度以上360度未満の間に固定します。この範囲外の値が設定された場合、この範囲内の同等の角度に設定されてから使用されます。(これを-10に設定することは、350に設定することと同じです)。
- anchorradius link
- Type:
(position)
極座標で指定されるアンカー位置の半径成分です。
float の場合、displayable のサイズと形状に合わせて水平方向と垂直方向に拡大縮小されます: 高さが幅と等しくない場合、半径は厳密には絶対座標というわけではないので、 anchorangle を変化させたときに楕円運動になります。そのため、このプロパティには
int
またはabsolute()
の値のみを渡すことをお勧めします。
トリミングとサイズ変更 link
- crop link
- Type:
None or (position, position, position, position)
- Default:
None
None でない場合、displayable は指定の大きさに切り取られます。切り取りサイズは (x, y, width, height) のタプルで指定されます。
cornerとcropが指定されると、cropがcornerより優先されます。
- corner1 link
- Type:
None or (position, position)
- Default:
None
None を指定するか、crop ボックスの左上隅を指定します。 corner より crop が優先されます。浮動小数が指定され、 crop_relative が有効ならそれはその子のサイズに対する相対値になります。
- corner2 link
- Type:
None or (position, position)
- Default:
None
None を指定するか、crop ボックスの右下隅を指定します。 corner より crop が優先されます。浮動小数が指定され、 crop_relative が有効ならそれはその子のサイズに対する相対値になります。
- xysize link
- Type:
None or (position, position)
- Default:
None
None でなければ Displayable を指定のサイズにスケールします。これは
xsize
とysize
プロパティーをそれぞれ1つ目と2つ目の要素に設定するのと同じです。これは
fit
プロパティーに影響されます。.
- xsize link
- Type:
None または position
- Default:
None
None または、displayable の幅が合わせられる値を指定します。
これは
fit
プロパティーに影響されます。.
- ysize link
- Type:
None または position
- Default:
None
None または、displayable の高さが合わせられる値を指定します。
これは
fit
プロパティーに影響されます。.
- fit link
- Type:
None または文字列
- Default:
None
以下の表に応じて Displayable のサイズを合わせます。ここでの「方向」は次の通りです。 :
それらのプロパティーの一方のみが None でなければその方向のみが使用されます。
そうではなく、 fit が None でなければ、その transform が含まれている領域が方向として使用されます。
fit と xsize, ysize がすべて None なら、このプロパティーは適用されません。
Value
Description
contain
アスペクト比を維持して各方向の指定を超えない範囲で大きくする
cover
アスペクト比を維持してすべての方向の指定に合う、または超えるように小さくする
None または
fill
displayable を正確に方向指定に合うように引き延ばす
scale-down
contain
同様ですが、 displayable のサイズを増加させないscale-up
cover
同様だが、 displayable のサイズを小さくしない
パンとタイリング link
- xpan link
- Type:
None or float
- Default:
None
None か、360度のパノラマ画像を水平に振る角度と解釈されます。画像の中心は0度として扱われ、左右はそれぞれ-180から180度になります。
- ypan link
- Type:
None or float
- Default:
None
None か、360度のパノラマ画像を縦に振る角度と解釈されます。画像の中心は0度として扱われ、上下はそれぞれ-180から180度になります。
- xtile link
- Type:
int
- Default:
1
水平に敷き詰める画像の個数です。
- ytile link
- Type:
int
- Default:
1
縦に敷き詰める画像の個数です。
トランジション link
ATL トランジション を参照してください。
- delay link
- Type:
float
- Default:
0.0
この transform がトランジションとして使われるなら、これはトランジションの持続時間になります。 ATL トランジション を参照してください。
- events link
- Type:
boolean
- Default:
True
True の場合、この transform の子にイベントが渡されます。False の場合、イベントはブロックされます(これはATL トランジション で使用され、イベントが old_widget に達することを防ぎます)。
その他 link
- show_cancels_hide link
- Type:
boolean
- Default:
True
通常、非表示中のものと同じタグや名前の displayable や スクリーンが表示されると、非表示中の Displayable やスクリーンは削除され、非表示の transform はキャンセルされます。このプロパティーが非表示する transform で False なら、このキャンセルが起きず、非表示の tranform は最後まで実行されます。
ドキュメントの他の部分で記述される一連の transform プロパティーもあります。 :
- 3D Stage プロパティー :
perspective
,point_to
,orientation
,xrotate
,yrotate
,zrotate
,matrixanchor
,matrixtransform
,zpos
,zzoom
- Model-based rendering プロパティー :
- GL プロパティー :
The GL properties.
- Uniforms:
u_
で始まるプロパティーは custom shaders に使用される uniform です。
プロパティーの順番 link
これらのプロパティーは、以下の順に適用されます :
mesh, blur
tile
pan
crop, corner1, corner2
xysize, size, maxsize
zoom, xzoom, yzoom
point_to
orientation
xrotate, yrotate, zrotate
rotate
zpos
matrixtransform, matrixanchor
zzoom
perspective
nearest, blend, alpha, additive, shader
matrixcolor
GL Properties, Uniforms
位置プロパティー
show_cancels_hide
廃止された transform プロパティーの一覧 link
警告
より最近の機能と衝突する可能性があるため現在のゲームでは次のプロパティーは使用するべきでありません。これらは互換性を保つためだけに同じ動作を実現する新しい方法とともに残されています。
- alignaround link
- Type:
(float, float)
anchor
,around
,anchoraround
を同じ値にします。
- crop_relative link
- Type:
boolean
- Default:
True
False 、なら
crop
の浮動小数要素は元画像の高さと幅の割合ではなくピクセル数の絶対値として処理されます。ピクセル数の絶対値を表現する場合には、 crop_relative プロパティーを使用する代わりに
absolute()
インスタンスをcrop
プロパティーに指定するべきです。必要であれば、不明確な型の値はabsolute()
callable でラップできます。
円運動 link
補間ステートメントに clockwise
や counterclockwise
があれば円形モーションで補間されます。Ren'Py は (pos
, align
, angle
, radius
などで設定される) 開始と終了の位置を比較し、極座標の中心 (around
) を算出します。そして開始角度から終了角度まで、指定された方向の回転で進む角度を計算します。circles 節を指定すると、Ren'Py は適切な数の円が作られることを保証します。
外部イベント link
以下のイベントは自動的に実行されます :
start
on
ステートメントに進入したときに、これより高い優先度のイベントが起こらなかった場合に実行される擬似イベントです。show
transform が show ステートメントや scene ステートメントによって表示され、与えられたタグの画像がまだ存在しない場合に実行されます。
replace
transform が
show
ステートメントによって表示されて指定したタグの画像を置き換えると実行されます。hide
transform が
hide
ステートメントやそれと等価な Python を使って非表示されると実行されます。なお、これが実行されないときがあります。 transform が scene ステートメントを通して除去されたときや、ゲームメニューの終了などによって transform が存在する コンテキスト から抜けて除去されたときです。
replaced
transform が別のもので置き換えられたときに引き起こされます。画像は、ATL ブロックが完了するまで実際には非表示にはなりません。
update
スクリーンが表示されずに、または他のスクリーンを置き換えずに更新されると起ります。これはゲームロード時や、スタイルや翻訳変更時などにまれに起ります。
hover
,idle
,selected_hover
,selected_idle
,insensitive
,selected_insensitive
この transform を含むボタンやこの transform に含まれるボタンが名前通りの状態になったときに引き起こされます。
transofrm の置き換え link
Transform()
クラスを使用して定義された ATL transform や transform が他のクラスで置き換えられるとその transform のプロパティーは置き換えた transform に引き継がれます。
show
ステートメントの at リスト内に複数の transform があるとき、それらの transform は最後から最初の順にリストがなくなるまでマッチします。例えば
show eileen happy at a, b, c
"Let's wait a bit."
show eileen happy at d, e
c
transform は e
で、 b
transform は d
で置き換えられ、 a
transform は置き換えられません。
置き換え時、以前の transform のプロパティーの値は新しい transform に継承されます。以前の transform がアニメーションなら、途中の値が継承されます。例えば
transform bounce:
linear 3.0 xalign 1.0
linear 3.0 xalign 0.0
repeat
transform headright:
linear 15 xalign 1.0
label example:
show eileen happy at bounce
pause
show eileen happy at headright
pause
この例ではスプライトはプレイヤーがクリックするまで左右に往復します。クリックすると bounce
の xalign
でheadright の xalighn
が初期化され、スプライトはプレイヤーが最初にクリックしたときにあった位置から動き始めます。
位置プロパティー (xpos
, ypos
, xanchor
, yanchor
) の継承には特別なルールがあり、子で設定された値は親で設定された値を上書きします。これは Displayable の位置は1つのみで、アクティブに設定された位置が優先されるからです。これらのプロパティーは複数の方法で設定されます。例えば xalign
は xpos と xanchor を設定します。
最終的に show
ステートメントが at
節を含まなければ同じ Displayable が使用されるので継承は不要です。 Displayable を非表示して再度表示すれば継承はされなくなります。
ATL トランジション link
ATL transform を使用してトランジションを定義できます。それらのトランジションは old_widget と new_widget 引数を受け取る必要があります。それらはそれぞれトランジション前と後の displayable に渡されます。
ATL トランジションは delay
プロパティーをそのトランジションが続く秒数の数値に設定しなければいけません。 events
プロパティーを使用して old Displayable がイベントを受け取らないようにもできます。
transform spin(duration=1.0, new_widget=None, old_widget=None):
# Set how long this transform will take to complete.
delay duration
# Center it.
xcenter 0.5
ycenter 0.5
# Spin the old displayable.
old_widget
events False
rotate 0.0
easeout (duration / 2) rotate 360.0
# Spin the new displayable.
new_widget
events True
easein (duration / 2) rotate 720.0
特別な ATL キーワードパラメーター link
パラメーターリストにそのパラメーターがあれば、特定のコンテキストで Ren'Py が ATL に提供するいくつかのパラメーターがあります。
- child
ATL が transform として使用されるとき、 child パラメーターにはその transform が適用された元の child が渡されます。これによりそのchild が明示的に参照されます。例えば提供された child と 他の Displayable を交換できます。
transform lucy_jump_scare(child): child # Show the original child. pause 5 "lucy mad" # Jump scare. pause .2 child # Go back to the original child.
contains
ブロック 内にもとの child を配置しても使用出来ます。transform marquee(width, height=1.0, duration=2.0, child=None): xcenter 0.5 ycenter 0.5 crop_relative True crop (0, 0, 0.5, 500) contains: child xanchor 0.0 xpos 1.0 linear duration xanchor 1.0 xpos 0.0
- old_widget, new_widget
ATL ブロックがトランジションとして使用されるとき、これらはトランジション前と後の Displayable にそれぞれ与えられます。