PLANO INFINITO, CIELO Y GUERRERO CON DESPLAZAMIENTO
; ================================================
; función: plano infinito, guerrero y cielo
; fecha: 19-febrero-2026
; autor: Erick Chachi
; lenguaje: Blitz3D
; archivo: avatar_cielo.bb
; ================================================
; variables globales:
; variables para control de teclado
Global escape_key = 1
Global up_key = 200, down_key = 208, left_key = 203, right_key = 205
Global W_key = 17, S_key = 31, A_key = 30, D_key = 32, z_key = 44
; variables para control de coordenadas del avatar
; nombre del avatar: "viking"
Global viking
; coordenadas iniciales del avatar
Global x#=0, y#=-1, z#=10
Graphics3D 1024,768,32
SetBuffer BackBuffer()
;carga heroe
viking=LoadMesh("dwarf1.b3d")
PositionEntity viking,0,0,-40
; Crea primera camara
cam1=CreateCamera(viking) ; avatar: "neper1" enlazado a la camara "cam1"
PositionEntity cam1,1,50,-60
RotateEntity cam1,15,0,0
;Podemos agregar algo de luz ambiental
;las cosas no se oscurezcan : cada valor va de 1 a 255
; los parametros son una mezcla de color RGB
AmbientLight 200, 200, 200
; crea un punto de luz estándar llamado "luz1": (1 = direccional (predeterminado), 2 = punto, 3 = cono)
; 1= funciona como un sol brillando sobre una casa. La intensidad de la iluminación dependerá
; del ángulo en que la luz incida sobre ellos.
; 2= crea un punto de luz. Esto funciona como una bombilla iluminando dentro de una casa,
; comenzando en un punto central y desvaneciéndose gradualmente hacia el exterior.
; 3= Un valor 3 crea una luz spot. Esto es un cono de luz.
luz1=CreateLight(1)
RotateEntity luz1,45,0,0
; crear un plano infinito para colocar elementos de juego
plane=CreatePlane()
pasto=LoadTexture("pasto.bmp")
EntityTexture plane,pasto
ScaleTexture pasto,50,50
PositionEntity plane,0,0,10
;crear el cielo!
;Hacer un cielo es más sencillo de lo que se pensamos:
; 1. crea una esfera
sky = CreateSphere()
; 2. le colocamos una textura
skytexture = LoadTexture("cielo1.bmp")
EntityTexture sky,skytexture
; 3. agrandamos la esfera para que quede como una cúpula sobre el terreno
; asi quedamos detro de la esfera
ScaleEntity sky,1000,500,1000
; como la textura está colocada por la parte externa de la esfera, al mirar hacia arriba
; veremos el interior de la esfera que es de color negro: es decir, no veriamos cielo azul ni nubes
; entonces el siguiente comando coloca la textura de la esfera por su lado interior
; o hace que la textura sea visible desde el interior de la esfera, asi vermos cielo azul y nubes
FlipMesh sky
; bucle infinito para inicio/fin de juego y control del avatar
While Not KeyDown( 1 )
If KeyDown(200) Then ; cursor arriba
MoveEntity viking,0,0,0.5
Text 10,50,z#
EndIf
If KeyDown(208) Then ; cursor abajo
MoveEntity viking,0,0,-0.5
EndIf
If KeyDown(203) Then ; cursor izquierda
TurnEntity viking,0,1,0
EndIf
If KeyDown(205) Then ; cursor derecha
TurnEntity viking,0,-1,0
EndIf
; _____________________________________________________________________
; cambiar la posicion de la camara de seguimiento del avatar
; A: camara hacia abajo
; z: camara hacia arriba
If KeyDown(30) ; A
TranslateEntity cam1,0,-0.5,0
Else If KeyDown(44) ;Z
TranslateEntity cam1,0,+0.5,0
EndIf
RenderWorld
Text 0,0,"Use teclas cursoras para mover guerrero sobre plano infinito"
Text 0,15,"El guerrero tiene animación pero esta desactivada"
Text 0,30,"A: sube la camara. Z: baja la camara"
Flip
Wend
End
No hay comentarios:
Publicar un comentario
Porque en mi llevo el caos puedo hacer una estrella.