Hola Visitante

Mensajes recientes

Páginas: [1] 2 3 ... 10
1
Retos propuestos / Re:Asteroid
« Último mensaje por Passixs en 12 de Junio del 2019, 05:45 »
Чувствуйте себя прекрасно каждый раз, когда вы посещаете этот сайт, который знает
2
Programación / Re:duda sobre error al instalar apk
« Último mensaje por Passixs en 12 de Junio del 2019, 05:43 »
Потому что то, что заставляет нас называть это сообщество великих мнений
3
Tutoriales / Godot 3D, Giro por desliz
« Último mensaje por bizarman en 05 de Junio del 2019, 00:59 »


Un personaje que al contacto con inclinaciones gira con estas.
No es un RigidBody es un KinematicBody2D.
La forma de la colisión (CollisionShape) no gira, gira la malla
(el nodo MeshInstance), puedes modificarlo para que gire todo, pero los
resultados son un poco inestables.



Ingredientes:
En este caso tiene una colisión (CollisionShape) en forma de
cubo (BoxShape)



Posicionamos el personaje, en este caso mira contrario
al eje: x, el personaje debe estar bien centrado en todos los ejes:
centrado en el eje: x
centrado en el eje: y
centrado en el eje: z
No lo centres en godot, centralo en Blender, o el programa
que usastes para crearlo.



Código: [Seleccionar]

extends KinematicBody


var velocidad_caminar = 500
var velocidad_giro = deg2rad(30)
var velocidad_salto = 600
var gravedad = -9.8
var giro = 0
var saltando = false
var direccion = Vector3()


var velocidad_torque = 9
var velocidad_amortiguacion = 5
onready var posicion_rampa = get_node("MeshInstance").get_translation() + Vector3(0, -0.5, -0.25)
onready var posicion_suelo = get_node("MeshInstance").get_translation()




func _physics_process(delta):
direccion.x = 0
direccion.z = 0

if Input.is_action_just_pressed("ui_select") and is_on_floor():
saltando = true
direccion.y = velocidad_salto * delta

if Input.is_action_pressed("ui_left"):
giro += velocidad_giro * delta

if Input.is_action_pressed("ui_right"):
giro -= velocidad_giro * delta

if Input.is_action_pressed("ui_up"):
direccion.x = -velocidad_caminar * delta

if Input.is_action_pressed("ui_down"):
direccion.x = velocidad_caminar * delta

direccion.y += gravedad * delta
direccion = direccion.rotated(Vector3(0, 1, 0), giro)

get_node("CollisionShape").set_rotation(Vector3(0, giro, 0))
get_node("MeshInstance").rotate_object_local(Vector3(0, 1, 0), giro - get_node("MeshInstance").get_rotation().y - deg2rad(90))

direccion = move_and_slide(direccion, Vector3(0, 1, 0))

if saltando and is_on_floor():
saltando = false

if get_slide_count() > 0:
var choque = get_slide_collision(0)
var normal = choque.get_normal()
if not is_on_wall():
var angulo_inicial = Vector2(normal.y, normal.z).angle()
var global = get_node("MeshInstance").get_global_transform().basis
var angulo_global = Vector2(global[1].y, global[1].z).angle()
var angulo_final = angulo_inicial - angulo_global
get_node("MeshInstance").global_rotate(Vector3(1, 0, 0), angulo_final * delta * velocidad_torque)

if abs(angulo_inicial) > deg2rad(1):
var pos_inicial = get_node("MeshInstance").get_translation()
var pos_final = posicion_rampa - pos_inicial
get_node("MeshInstance").global_translate(pos_final * delta * velocidad_amortiguacion)

if abs(angulo_inicial) < deg2rad(1):
var pos_inicial = get_node("MeshInstance").get_translation()
var pos_final = posicion_suelo - pos_inicial
get_node("MeshInstance").global_translate(pos_final * delta * velocidad_amortiguacion)


Nota:
Probado en Godot 3.1
4
Tutoriales / Godot 3D, Un personaje simple
« Último mensaje por bizarman en 31 de Mayo del 2019, 20:57 »

No hace uso del motor de física que trae Godot, esto puede ser útil para ahorrar recursos de la máquina.
Gira, se mueve adelante, se mueve para atrás, gira mientras se mueve, salta, se mueve mientras salta.
Godot 3.1.



Código: [Seleccionar]


extends KinematicBody


var velocidad_caminar = 300
var velocidad_giro = deg2rad(30)
var velocidad_salto = 600
var gravedad = -9.8
var giro = 0
var saltando = false


var direccion = Vector3()
func _physics_process(delta):
direccion.x = 0
direccion.z = 0

if Input.is_action_just_pressed("ui_select") and is_on_floor():
saltando = true
direccion.y = velocidad_salto * delta

if Input.is_action_pressed("ui_left"):
giro += velocidad_giro * delta

if Input.is_action_pressed("ui_right"):
giro -= velocidad_giro * delta

if Input.is_action_pressed("ui_up"):
direccion.x = -velocidad_caminar * delta

if Input.is_action_pressed("ui_down"):
direccion.x = velocidad_caminar * delta

direccion.y += gravedad * delta
direccion = direccion.rotated(Vector3(0, 1, 0), giro)

set_rotation(Vector3(0, giro, 0))

direccion = move_and_slide(direccion, Vector3(0, 1, 0))

if saltando and is_on_floor():
saltando = false

5
Tutoriales / Godot 2D, Giro por desliz
« Último mensaje por bizarman en 30 de Mayo del 2019, 19:56 »

Un personaje que al contacto con inclinaciones gira con estas.
No es un RigidBody es un KinematicBody2D, por rendimiento.
La forma de la colisión (CollisionShape) no gira, gira el la imagen
(el nodo Sprite), puedes modificarlo para que gire todo, pero los
resultados son un poco inestables.
Probado en Godot 3.1



Aqui su programación.
Código: [Seleccionar]

extends KinematicBody2D


var velocidad_caminar = 300
var velocidad_salto = -400
var gravedad = 980
var direccion = Vector2()
var saltando = false


var velocidad_giro = 10
onready var posicion_rampa = get_node("Sprite").get_position() + Vector2(0, 12)
onready var posicion_suelo = get_node("Sprite").get_position()


func _physics_process(delta):
direccion.x = 0

if Input.is_action_just_pressed('ui_select') and is_on_floor():
saltando = true
direccion.y = velocidad_salto

if Input.is_action_pressed('ui_right'):
direccion.x += velocidad_caminar

if Input.is_action_pressed('ui_left'):
direccion.x -= velocidad_caminar

direccion.y += gravedad * delta

if saltando and is_on_floor():
saltando = false

direccion = move_and_slide(direccion, Vector2(0, -1), true)

if get_slide_count() > 0:
var choque = get_slide_collision(0)
var normal = choque.get_normal()
var angulo_inicial = normal.angle() + deg2rad(90)
var angulo_final = angulo_inicial - get_node("Sprite").get_rotation()
get_node("Sprite").rotate(angulo_final * delta * velocidad_giro)

if angulo_inicial != 0:
var posicion_final = posicion_rampa - get_node("Sprite").get_position()
get_node("Sprite").translate(posicion_final * delta * velocidad_giro)
if angulo_inicial == 0:
var posicion_final = posicion_suelo - get_node("Sprite").get_position()
get_node("Sprite").translate(posicion_final * delta * velocidad_giro)


Nota:
El personaje tiene una colisión (CollisionShape) en forma de rectángulo (RectangleShape)
6
Programación / Re:Agarrar items para combinarlos
« Último mensaje por Kash en 28 de Mayo del 2019, 14:22 »
Si vi el ejemplo.
Pero ahi usan un nodo especifico que trae godot para pickear colores.

De todas maneras ahi entra mi duda, usar un derivado de Control para poder acomodarlos en una grilla, o un Nodo2D para que detecte las colisiones y el click del raton.
7
Programación / Re:Agarrar items para combinarlos
« Último mensaje por bizarman en 27 de Mayo del 2019, 06:33 »
  Bien por usar el foro  :)  y no esa algarabía de facebook  :-\ . Dices que no sabes por donde empezar, yo te recomiendo que descargues los ejemplos oficiales de Godot, dentro de la carpeta: gui importa el proyecto llamado: drag_and_drop, revisa como esta hecho e inspirare.
8
Programación / Agarrar items para combinarlos
« Último mensaje por Kash en 26 de Mayo del 2019, 02:40 »
muy buenas amigos


estoy intentando hacer un juego donde tomo 2 elementos y se combinen, como los clasicos juegos de navegador donde uno juega a ser "Dios"
donde juntas 2 elementos, por ejemplo: aire y agua
entonces uno hace click en el icono aire, lo arrastra hacia el icono de agua y se forma un icono de "lluvia", por ejemplo.


mi problema comienza en que no sé que nodo comenzar a usar. Si un nodo Control o un nodo2D. Puesto que tambien quiero que esten dentro de un inventario o una grilla.


por donde debería empezar a buscar informacion? o cual es el nodo idoneo para esta situacion?

saludos y gracias por su atencion  :D
9
La Biblioteca / Una API traducible
« Último mensaje por bizarman en 22 de Mayo del 2019, 04:52 »

Si traducimos la API de Godot con el traductor de google, la
traducción deja mucho que desear.
Clic en la imagen para ver mas grande.



Pero si descargamos esta API:
https://drive.google.com/file/d/1mYf8GOqPHuICbSyvWqmK0rfwlGtn0DxX/view?usp=sharing

Ahora traducimos, el resultado es un poco mejor.
Clic en la imagen para ver mas grande.




Para buscar en la API tendremos que hacerlo con una
aplicación externa de búsqueda de archivos.
Clic en la imagen para ver mas grande.




Notas:
No traduce las constantes de clase.
10
Arte y Diseño / Godot 2D, Baldosas (Tileset)
« Último mensaje por bizarman en 21 de Mayo del 2019, 23:39 »
  Hoy comparto unas baldosas (tileset) listas para ser usadas en
Godot, las ilustraciones fueron creadas por:
https://www.gameart2d.com

Descarga aquí el archivo de Baldosas (Tileset) para Godot:
https://drive.google.com/file/d/19wsphbDtfR4yk9SyR9NXoA3wVdeV1Jak/view?usp=sharing


Nota:
No use todas las ilustraciones, por que normalmente en los
vídeo juegos ese tipo de imágenes están animadas, se recolectan o se
lanzan como la caja, el hongo y los letreros.
Eres libre de modificarlo como quieras.
Páginas: [1] 2 3 ... 10