Traducir este blog

PLANO INFINITO, CIELO Y GUERRERO CON DESPLAZAMIENTO

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

*******************************************************************************


*******************************************************************************
NOTA: El guerrero se puede abrir con "MilkShape" y ver, con la opción de animación de este programa, todos los movimientos que posee, para extraer las animaciones y programarlas con Blitz3D:
caminar, correr, golpear con el hacha, caer, etc.


No hay comentarios:

Publicar un comentario

Porque en mi llevo el caos puedo hacer una estrella.