--[[ --------------------------------------------------------------------------------------------------- 角度補正.anm(v1.10.1) 2023/12/17 v1.00.0 配布 2023/12/17 v1.00.1 ミスを修正 2023/12/18 v1.10.0 不具合の修正/初期設定の変更 基準点表示設定追加 レイヤー監視機能の追加 2023/12/19 v1.10.1 ミスを修正 --------------------------------------------------------------------------------------------------- ]] @角度補正 --track0:X基準点,-10000,10000,0 --track1:Y基準点,-10000,10000,0 --track2:監視レイヤー,0,100,1,1 --check0:現在位置参照,1 --dialog:基準点表示/chk,cha=0; px=-obj.track0 py=-obj.track1 ogvx=0 ogvy=0 ox = 0 oy = 0 if(obj.check0) then ox = math.floor(obj.x) oy = math.floor(obj.y) end ------------------------------------ if(obj.check0) then if(obj.track2>0) then t2=math.floor(obj.track2) lx="layer"..t2..".x" ly="layer"..t2..".y" ogvx=-obj.getvalue(lx) ogvy=-obj.getvalue(ly) end end if(obj.check0) then ox=ox+ogvx oy=oy+ogvy end ------------------------------------ cx = obj.cx cy = obj.cy rz=math.atan(((oy+cy+py)/(ox+cx+px)))*180/math.pi if((ox+cx+px)<0) then rz=rz+180 end obj.rz = obj.rz+rz if(cha==1) then obj.draw() obj.load("figure","円",0x000000,55) obj.draw(-cx-px-ox,-cy-py-oy) obj.load("figure","円",0xff0000,50) obj.draw(-cx-px-ox,-cy-py-oy) end @ターゲット角度定義 --track0:X基準点,-10000,10000,0 --track1:Y基準点,-10000,10000,0 --track2:監視レイヤー,0,100,1,1 --dialog:基準点表示/chk,cha=0; px=-obj.track0 py=-obj.track1 ogvx=0 ogvy=0 if(obj.track2>0) then t2=math.floor(obj.track2) lx="layer"..t2..".x" ly="layer"..t2..".y" ogvx=-obj.getvalue(lx) ogvy=-obj.getvalue(ly) end @円形配置 --track0:半径,0,10000,100 --track1:個数,1,1000,1,1 --track2:回転,-360,360,0 --track3:表示角度,0,360,0 --dialog:外向き/chk,ch1=0;ターゲット追従/chk,ch2=1;└現在位置参照/chk,ch3=1; l=obj.track0 num=obj.track1 r=obj.track2 rr=obj.track3 obj.effect() ox = math.floor(obj.x) oy = math.floor(obj.y) ------------------------------------ if(ch3==1) then ox=ox+ogvx oy=oy+ogvy end ------------------------------------ cx =-obj.cx*-math.cos(obj.rz*math.pi/180) cy =-obj.cy*math.sin(obj.rz*math.pi/180) if(ch3==0) then ox = 0 oy = 0 end for i=0,num-1 do rad = 360*i/(num+rr)+r x = math.cos(rad*math.pi/180)*l y = -math.sin(rad*math.pi/180)*l rz = 360*i/(num+rr)+r if(ch2==1) then rz=math.atan(((oy+y+py+cx)/(ox+x+px+cx)))*180/math.pi if((ox+x+px)<0) then rz=rz+180 end end if(ch1==1) then rz =rz-180 end obj.draw(x,y,0,1,1,0,0,rz) end if(cha==1) then obj.load("figure","円",0x000000,55) obj.draw(-cx-px-ox,-cy-py-oy) obj.load("figure","円",0xff0000,50) obj.draw(-cx-px-ox,-cy-py-oy) end @画像ループ --track0:横個数,1,100,1,1 --track1:縦個数,1,100,1,1 --track2:横間隔,0,2000,100 --track3:縦間隔,0,2000,100 --dialog:外向き/chk,ch1=0;ターゲット追従/chk,ch2=1;└現在位置参照/chk,ch3=1; nx=obj.track0 ny=obj.track1 bx=obj.track2 by=obj.track3 cx =-obj.cx*-math.cos(obj.rz*math.pi/180) cy =-obj.cy*math.sin(obj.rz*math.pi/180) obj.effect() ox = math.floor(obj.x) oy = math.floor(obj.y) ------------------------------------ if(ch3==1) then ox=ox+ogvx oy=oy+ogvy end ------------------------------------ if(ch3==0) then ox = 0 oy = 0 end for j=0,ny-1 do y=-by*(ny-1)/2 + j*by if(ny%2==0) then y=y+by/2 end for i=0,nx-1 do x=-bx*(nx-1)/2 + i*bx if(nx%2==0) then x=x+bx/2 end if(ch2==1) then rz=math.atan(((oy+y+py)/(ox+x+px)))*180/math.pi end if((ox+x+px)<0) then rz=rz+180 end if(ch1==1) then rz =rz-180 end obj.draw(x,y,0,1,1,0,0,rz) end end if(cha==1) then obj.load("figure","円",0x000000,55) obj.draw(-cx-px-ox,-cy-py-oy) obj.load("figure","円",0xff0000,50) obj.draw(-cx-px-ox,-cy-py-oy) end @ランダム配置 --track0:範囲,0,10000,100 --track1:個数,1,1000,1,1 --track2:回転,-360,360,0 --track3:中心半径,0,10000,0 --dialog:外向き/chk,ch1=0;ターゲット追従/chk,ch2=1;└現在位置参照/chk,ch3=1; l=obj.track0 num=obj.track1 r=obj.track2 a=obj.track3 cx =-obj.cx*-math.cos(obj.rz*math.pi/180) cy =-obj.cy*math.sin(obj.rz*math.pi/180) obj.effect() ox = math.floor(obj.x) oy = math.floor(obj.y) ------------------------------------ if(ch3==1) then ox=ox+ogvx oy=oy+ogvy end ------------------------------------ if(ch3==0) then ox = 0 oy = 0 end if( obj.getoption("multi_object") ) then start = obj.index+1 step = obj.num if( start > num ) then obj.setoption("draw_state",true) return end obj.ox = 0 obj.oy = 0 obj.oz = 0 else start = 1 step = 1 end if( obj.getoption("multi_object") ) then start = obj.index+1 step = obj.num if( start > num ) then obj.setoption("draw_state",true) return end obj.ox = 0 obj.oy = 0 obj.oz = 0 else start = 1 step = 1 end if( bb == 1 ) then obj.setoption("billboard",3) end for i=start,num,step do rad = obj.rand(-360,360,i,10)+r xx = obj.rand(-10000,10000,i,10)*l/10000+a+l x = math.cos(rad*math.pi/180)*xx y = -math.sin(rad*math.pi/180)*xx if( a > 0 ) then rad = obj.rand(-360,360,i,10)+r xx = obj.rand(-10000,10000,i,10)*l/10000+a+l x = math.cos(rad*math.pi/180)*xx y = -math.sin(rad*math.pi/180)*xx end if( ang == 1 ) then rz = obj.rand(0,360,i,32) else rx,ry,rz = 0,0,0 end if( r > 0 ) then rz = rz + obj.time*obj.rand(0,3600,i,42)*r/100 end if(ch2==1) then rz=math.atan(((oy+y+py)/(ox+x+px)))*180/math.pi if((ox+x+px)<0) then rz=rz+180 end end if(ch1==1) then rz =rz-180 end obj.draw(x,y,0,1,1,0,0,rz) end obj.setoption("focus_mode","fixed_size") if(cha==1) then obj.load("figure","円",0x000000,55) obj.draw(-cx-px-ox,-cy-py-oy) obj.load("figure","円",0xff0000,50) obj.draw(-cx-px-ox,-cy-py-oy) end @水平円形並べ --track0:個数,0,100,10,1 --track1:距離,0,2000,200 --track2:展開,-100,100,0 --track3:回転,-3600,3600,0 --dialog:Y軸回転なし/chk,cha=1;前非表示/chk,chb=0;後ろ非表示/chk,chc=0 n=obj.track0 l=obj.track1 k=obj.track2 rr=obj.track3 obj.effect() for i=0,n-1 do r=360*i/n+rr x=math.sin(r*math.pi/180)*l z=-math.cos(r*math.pi/180)*l s=obj.zoom if(chb==1 and z<0) then s=0 end if(chc==1 and z>=0) then s=0 end ry=-360*i/n-rr if(cha==1) then ry=ry*0 end rz=math.sin(r*math.pi/180)*l*k/100 obj.draw(x,0,z,s,1,0,ry,rz) end