Red de conocimiento informático - Aprendizaje de código fuente - Cómo hacer juegos 3D en idioma Yi, date prisa. O el código fuente se puede modificar más adelante.

Cómo hacer juegos 3D en idioma Yi, date prisa. O el código fuente se puede modificar más adelante.

Juego 3D: Xiaoyou Legend: versión Doraemon, el código fuente es demasiado largo... Vaya a Baidu y busque el juego Yiyu 3D para encontrarlo, al menos 3W palabras, puedo proporcionar el código, si quieres hacer un juego, 40M te llevará más de un mes y medio, pero hay que arrancar el motor

Versión 2

. p>

.Variables locales i

.Variable local Colort, tipo decimal

.Variable local F1, tipo decimal

.Variable local F2, decimal tipo

Representación de superficie 1. Iniciar renderización()

' /////////////////////////// ////////// //////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////////////////////////////////////////////// /////////

Sky.Render() 'Renderizar atmósfera

Sky.FogEnable(true)

' ///// ////////////////////////////////////////// ///////// //

.Si es verdadero (información del mapa.HeightX ≠ 0)

Terrain.Render() 'Renderiza el terreno

.Si realmente se acabó

' ////////////////////////////////////// ////// ////////////

' Renderizar modelo de fondo

.Si es verdadero(información del mapa.MeshNum > 0)

.Contando cabeza de bucle (información del mapa.MeshNum, i)

.Si es verdadero (TempMesh [i].Over = false y TempMesh [i].Kind ≠ 2)

Modelo[i] .Render()

.Fin si es verdadero

.Fin del bucle de conteo()

.Fin si es verdadero

' // //////////////////////////////////////////////// /// /////

' /////////////////////////////////////// ////////////////////

' Dibuja la parte del personaje

Si es verdadero (si se activan las sombras dinámicas)

Escena.Representación completa de sombra() ' Dibujar sombra

.End if true

Npc [1].Body.Rendering(false)

.Cabeza de bucle variable (2, información del mapa.NpcNum + 1, 1, i)

.Si es verdadero (Npc [i].Enable y Npc [i].Kind ≠ 6)

Colort = 1 - Npc [i].ActNum1 ÷ 5000

.Si es verdadero (Colort > 1)

Colort = 1

. Si es verdadero, finaliza

.Si es verdadero (Colort < 0)

Colort = 0

.Si es verdadero, finaliza

.Si es verdadero (Npc [i ].Estado = 4)

Material.Establecer opacidad (Normal, Colort)

.End if True

Npc [i ].Cuerpo .Render(False) )

.if true(Npc [i].Estado

= 4)

Material.Establecer opaco (normal, 1)

.Fin si es verdadero

.Fin si es verdadero

.Variable Loop tail()

Bastón [bastón actual + 1].Render(false)

' If IfPart Then GE.DrawGlow 'Dibuja el arma para brillar

' ////////////////////////////////////////////////// /// /////

' /////////////////////////////////// ///// //////////////////

' //////////////////// /////// ///////////////////////////////

' Dibujar minimalla

.Si es verdadero( Water R. Ya sea para habilitar ())

Water R. Rendering ()

Si es verdadero, finalice

. Si es verdadero (información del mapa.MiniNum > 0)

.Cabeza de bucle de conteo (información del mapa.MiniNum, i)

.Si es verdadero (mini modelo temporal [i].Num ≠ 0)

Mini Modelo[i].Render()

.Fin si es verdadero

.Fin del bucle de conteo()

.End if true

.If true(ModelActor [14]. Si se habilita ())

ModelActor [14].Render(true)

. Si es verdadero, final

Si es verdadero(ModelActor [15]. Si se habilita ())

ModelActor [15].Render(true)

. true end

Sky.Fog Enable (False)

' Dibuja el modelo transparente de primer plano

Si es verdadero (MapInformation.MeshNum > 0)

.

Cuente el primer bucle (MapInformation. MeshNum, i)

.If true(TempMesh [i].Over)

Model[i].Render()

.Si es verdadero final

p>

.Fin del bucle de conteo()

.Si es verdadero final

' ////// ///////////// ////////////////////////////////////// /////////////////////////////////////////////////// ////////p

())

Water.Render() ' Dibuja la superficie del agua

. >

' ///////////// ///////////////////////////////// ///////////

. Primer bucle (información del mapa.NpcNum + 1, i)

.Si es verdadero (Npc [i].Shadow. Ya sea para habilitar () y si habilitar la sombra dinámica = false)

Npc [i].Shadow.Render() ' Dibujar sombra

.End if true

.Si es verdadero(Npc [i].Emoción > 0)

Npc [i].EmotionM.Render()

Npc [i].Emoción = Npc [i]. Emoción - duración

. Si es verdadero, finaliza

.cálculo.

Segundo bucle tail()

' ////////////////////////////////////// // //////////////////

.Si es verdadero (efectos especiales de la trayectoria del personal. Si se habilita ())

Personal efectos especiales de trayectoria.

.Fin si es verdadero

.Inicio del ciclo de conteo (#EffectAnimMax + 1, i)

.Si es verdadero(EffectAnim [i]. Habilitar)

EffectAnim [i].Body.Rendering(true)

.End if true

.Fin del bucle de conteo()

Si es verdadero (si habilitar partículas)

Escena: renderiza todos los sistemas de partículas (verdadero) 'Dibuja partículas

Si es verdadero. >Dibujo en pantalla Dibujar rectángulo 3D (Vecc [1], Vecc [2], -1)

Renderizado de superficie 1. Finalizar renderizado ()

' ////// //// ////////////////////////////////////////////////

' /////////////////////////////////////////// ///////// //////

' //////////////////////////// /////////// ///////////////////

' //////////// ///////////// /////////////////////////////////

.Si es verdadero (ya sea reflector de pantalla completa)

.Si (borroso o no)

Establezca parámetros de brillo (cree color E (1, 1, 1, 1). ), florecer × 0.1, suavizar)

. De lo contrario

Establecer parámetros de brillo (crear color E (1, 1, 1, 1), florecer, suavizar)

.If end

Representación de superficie luminosa BLT (representación de superficie 1)

Actualizar brillo()

. verdadero

' / ///////////////////////////////////////// ////////////// ///

' Pantalla final

Borrar pantalla (si está borrosa) ' Borrar pantalla

.If (ya sea reflector de pantalla completa)

GammaA = 0,5

De lo contrario

GammaA = 1

Si finaliza. /p>

Si es verdadero (ya sea borroso)

GammaA = GammaA × 0.2

Si es verdadero, finaliza

Inicia el dibujo en 2D. ()

Dibujar textura (Representación de superficie 1. Obtener índice de textura (), 0, 0, ancho de pantalla, alto de pantalla, RGBA (GammaR, GammaG, GammaB, GammaA)) 'Renderiza el principal. screen

Si es verdadero (cambiar contador de pantalla > 0)

Cambiar contador de pantalla = Cambiar contador de pantalla + duración

.Si es verdadero (Cambiar contador de pantalla > 1500). )

Cambiar contador de pantalla = 1500

.Si es verdadero final

.Si (reflector de pantalla completa o no)

Dibujo de pantalla. Dibujar textura (RS2. Obtener índice de textura (), 0, 0, ancho de pantalla, alto de pantalla,

RGBA (GammaR, GammaG, GammaB, (1 - Cambiar contador de pantalla ÷ 1500) × 0,5))

De lo contrario

Dibujar textura (RS2. Obtener índice de textura (). , 0, 0, ancho de pantalla, alto de pantalla, RGBA (GammaR, GammaG, GammaB, 1 - Alternar contador de pantalla ÷ 1500))

.if end

.if true(alternar Contador de pantalla = 1500)