Anuncios Google

modo 7 en luadev¿?(pasar code)

hola me gustaria implementar el modo 7 en mi juego (como en el FFIV the complete colection ) ; pero no se como :s ; e encontrado un code que esta en lua pero no veniacon ´´instrucciones´´ de como usarlo  y en la pagina ponia que el autor ya lo habia abandonado ; bueno os dejo el code:

local major, minor = "Mode7-1.0", 90000 + tonumber(("$Revision: 32 $"):match("(%d+)"))
 
if not AceLibrary then error(major .. " requires AceLibrary.") end
if not AceLibrary:IsNewVersion(major, minor) then return end
 
local lib={}
local Mode7={}
 
function lib:CreateTexture(parent, name, layer, relative,relativeTo,offsetX,offsetY,Width,Height, mode7func)
	local f=CreateFrame("FRAME",name,parent)
 
	f:SetPoint(relative,parent,relativeTo,offsetX,offsetY)
	f:SetWidth(Width)
	f:SetHeight(Height)
 
	f.Textures={}
 
	local CurY,NexY,Inc
 
	Inc=1/Height
	CurY=0
	NexY=Inc
 
	f.Mode7Func=mode7func or DefaultScaler
 
	for i=1, Height do
		local t=f:CreateTexture(nil,layer)
		t:SetPoint("TOPLEFT",f,"TOPLEFT",0,-(i-1))
		t:SetWidth(Width)
		t:SetHeight(1)
		t.id=i
 
		t.Mode7Precalc=i/Height
		t.Mode7Scale=f.Mode7Func(t.Mode7Precalc)
		t.UpperY=CurY
		t.LowerY=NexY
		t.CalcTexCoords=Mode7.CalcTexCoords	
 
		table.insert(f.Textures,t)
 
		CurY=NexY
		NexY=NexY+Inc
	end
 
	f.SetTexture=Mode7.SetTexture
	f.SetCoords=Mode7.SetCoords
	f.SetColor=Mode7.SetColor
	f.AdjustScaling=Mode7.AdjustScaling
 
	return f
end
 
AceLibrary:Register(lib, major, minor)
 
 
function DefaultScaler(a)
	return a
end
 
function Mode7:SetTexture(name)
	for _, t in pairs(self.Textures) do
		t:SetTexture(name)
	end
end
 
function Mode7:SetCoords(scale,xoffset,yoffset,angle)
	if not self:IsVisible() then
		return
	end
 
	for _, t in pairs(self.Textures) do
		t:CalcTexCoords(scale,xoffset,yoffset,angle)
	end
end
 
function Mode7:SetColor(r,g,b,a)
	for _, t in pairs(self.Textures) do
		t:SetVertexColor(r,g,b,a)
	end
end
 
function Mode7:AdjustScaling()
	for _, t in pairs(self.Textures) do
		t.Mode7Scale=self.Mode7Func(t.Mode7Precalc)
	end
end
 
 
function setCoords(t, A, B, C, D, E, F)
	local det = A*E - B*D;
	local ULx, ULy, LLx, LLy, URx, URy, LRx, LRy;
 
	local Y1,Y2
	Y1=t.UpperY
	Y2=t.LowerY
 
	ULx, ULy = ( -Y1*B + B*F - C*E ) / det, ( Y1*A - A*F + C*D ) / det;
	LLx, LLy = ( -Y2*B + B*F - C*E ) / det, ( Y2*A - A*F + C*D ) / det;
	URx, URy = ( E - Y1*B + B*F - C*E ) / det, ( -D + Y1*A -(A*F) + C*D ) / det;
	LRx, LRy = ( E - Y2*B + B*F - C*E ) / det, ( -D + Y2*A -(A*F) + C*D ) / det;
 
	t:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy);
end
 
local CosA,SinA
local Mode7_A, Mode7_B, Mode7_C, Mode7_D, Mode7_E, Mode7_F
 
function Mode7:CalcTexCoords(scale,xoffset,yoffset,angle)
	local Radian=math.pi*angle/180
 
	xoffset=(xoffset-0.5)
	yoffset=(yoffset-0.5)
	--Only do this stuff once each time
	if self.id==1 then
		CosA=math.cos(Radian)
		SinA=math.sin(Radian)		
	end
 
	--Could precalc parts of this but not really worth it due the Mode7Scale var changes with lines
	Mode7_A=self.Mode7Scale*scale*CosA
	Mode7_B=self.Mode7Scale*scale*SinA
 
	Mode7_D=self.Mode7Scale*-scale*SinA
	Mode7_E=self.Mode7Scale*scale*CosA
 
	Mode7_C=self.Mode7Scale*scale*(xoffset*CosA+yoffset*SinA)+0.5
	Mode7_F=self.Mode7Scale*scale*(-xoffset*SinA+yoffset*CosA)+0.5
 
 
	setCoords(self,Mode7_A,Mode7_B,Mode7_C,Mode7_D,Mode7_E,Mode7_F)
 
	--self:SetTexCoord(ULx, ULy, LLx, LLy, URx, URy, LRx, LRy)
end

bueno gracias por adelantado :)




Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de NEKERAFA

Mmm...

LuaDEV trae una función que permite mostrar una imagen en 3D. No funciona muy bien, ya que es experimental, pero puede servir para lo que quieres hacer.

Experimenta con los valores hasta que veas el resultado que quieres hacer:

imagen:zblit(x, y, z, x radianes, y radianes, z radianes)

P.S: Acuerdate que para pasar de grados a radianes existe la función math.rad() .


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Zero40

una cosa...

Me podrias pasar el code para que quede como la parte de arriva de la esfera?(Si as usado rpg maker vx como el mode 7 que hay , aii xd )
Esque por desgracia me he vuelto a quedar sin psp :s , y no puedo ir probando :S

Pd: hay algun emu de la psp para win en el que vayan las apps hechas en luadev?



Imagen de Mills

pues

El emulador más conocido, el jpcsp, no carga luadev, o no lo cargaba hace dos meses cuando lo probé, puede que lo hayan mejorado.

Para hacer la esfera (supongo que te refieres al cielo o el fondo), simplemente usa una imagen plana en la que no se vean los bordes ("tileable" o enlosable) y que se mueva hacia los lados cuando gire el suelo, y luego usa la opción de niebla para difuminar el horizonte. Queda muy feo, pero es lo que hacían en super nintendo.

 


Pobre PSP

Imagen de Zero40

eso....

Eso ya lo sabia , yo me referia al suelo pero creo q me e explicado mal asique gracias igualmente , como hago la niebla y cuales son las cordenadas xyz para que quede como la parte de la esfera del mundo por arriba?(el suelo)



Imagen de Mills

Jaja

Pero a ver.. la parte de la esfera del mundo por arriba.. eso es el cielo... si no, no me entero jaja

Mira,  en luadev R0 puedes hacer esto(lo que sale al principio):

 

 

Una imagen plana como suelo, y un fondo plano que se mueve, aún así, cuando te acerques mucho, el suelo no se verá porque la cámara no puede tocar el plano.

 

La niebla se hace con las opciones world:

world.fog(cerca,lejos,color) 
--cerca es la distancia en unidades donde empieza a haber niebla, lejos es la distancia donde ya no hay visibilidad.


Pobre PSP

Imagen de Zero40

exacto...

lo del principio del video es lo que quiero a eso me referia xd , como puedfo hacerlo?

 

edito: algo mas o menos como esto : http://www.youtube.com/watch?v=JoAqb51pCN4&feature=related

 



Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.