Skip to content

Instantly share code, notes, and snippets.

@sirane
Last active December 14, 2015 13:58
#!/usr/bin/python
#-*- encoding: utf-8 -*-
#coding=utf-8
from siraeffanim.EffectAnim_Engine import EffectAnim_Main
from siraeffanim.EffectAnim_Base import *
from siraeffanim.EffectAnim_Template import *
"""============================================================================
依存値の簡易指定~~
"""
#全体フレーム数。大きくするとエフェクト時間をゆったり引き延ばす。
TOTALLENGTH = 50
#出現オブジェ数
OBJECTNUM = 32
"""============================================================================
テストエフェクト。
エフェクトの総まとめ。
各エフェクトセルの使用をここで定義する。
"""
class EffectFrame_Test(EffectFrame):
def __init__(self, **kwargs ):
EffectFrame.__init__( self, kwargs ,
sellSplitSize = (2,3) , #画像ファイルの切り取り数。縦横にそれぞれ何分割するかって値。
CanvasSizeOfByScale = ( 2.5 , 2.5 )
)
self.paraminit( TOTALLENGTH ) #エフェクトの長さ。
#以下セルの定義。
#指定順番がそのまま描画順番になるよ。
#▼もやっ
self.AddSell( EffectFrameSell_Template_Simple(
param_SrcImageSellGridPos = ( 0 , 0 ) ,
lamb_DrawScale = lambda p,x:( lamb_grad_Sin2Line( p , 1.0 ) * x ) ,
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.6 ) * x ) ,
param_DrawScale = ( 1.6 , 1.6 )
) )
#▼中心ピカー!
self.AddSell( EffectFrameSell_Template_Simple(
param_SrcImageSellGridPos = ( 0 , 1 ) ,
lamb_DrawScale = lambda p,x:( lamb_grad_Sin2Line( p , 0.6 ) * x ) ,
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.5 ) * x ) ,
param_DrawScale = ( 1.0 , 1.0 )
) )
#▼衝撃シュパーン
self.AddSell( EffectFrameSell_Template_Simple(
param_SrcImageSellGridPos = ( 1 , 1 ) ,
lamb_DrawScale = lambda p,x:( p * x ) ,
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , 0.8 ) * x ) ,
param_DrawScale = ( 6.0 , 2.0 ) ,
lamb_SurfTransform = lambda surf:( pygame.transform.rotate( surf , 20.0 ) )
) )
#▼ピカピカぱーてぃこ~
#中心ピカーにコレが重なってさらにピカーってなる。その後は小さくなってふわっと消える感じで。
for i in range( OBJECTNUM ) :
#lambdaにそのまま書くと遅延評価されちゃうので、乱数含む値は一旦変数に。
alphatime = ( random.randint(35,98)*0.01 )
scale = ( random.randint(75,200)*0.01 )
xpos = ( random.randint(0,180) - 90 )/2 #中心から最終的に行く位置
ypos = ( random.randint(0,180) - 90 )/2
self.AddSell( EffectFrameSell_Template_Simple(
param_SrcImageSellGridPos = ( 1 , 0 ) ,
lamb_DrawPos = ( lambda p,x: p * x + sin( ( p + x*0.37 ) * PI * 2 ) * 5 , lambda p,x: p * x ) ,
lamb_DrawScale = lambda p,x:( ( 1.0 - p ) * x * ( 0.5 + ( sin( ( p * x )* 5 ) + 1 )/4 ) ) ,
lamb_DrawAlpha = lambda p,x:( lamb_grad_Sin2Line( p , x ) / 2 ) ,
param_DrawPos = ( xpos , ypos ) ,
param_DrawScale = ( scale , scale ) ,
param_DrawAlpha = alphatime ,
Blend = BLEND_ADD
) )
"""============================================================================
実行コード。
ファイルの指定や描画サイズの決定はここで。
"""
if __name__ == '__main__':
getImagePathList = [
os.path.abspath("Effanimmap_Fire1.png").decode('shift-jis'),
os.path.abspath("Effanimmap_EffHelper.png").decode('shift-jis'),
]
drawEffectFrames = ( #1度に複数のエフェクトを同時描画も可能
EffectFrame_Test(
imagepathlist = getImagePathList , #エフェクトイメージファイルのリストを指定
drawRect = DrawRect( (0,0) , (400,400) ) #描画位置、サイズを指定。
)
, )
EffectAnim_Main( drawEffectFrames , CanvasSize = (400,400) ) #実行開始。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment