Blender python carro game

zanvapalo - 23/01/2014 01:25
Hola a todos, a continuación, les voy a pasar la programación
Blender Python para la Física y control de un carro 3d para
un video juego. Les paso también los enlaces de los video tutoriales
de dónde saque esto.

ESTA ES La FÍSICA. Esta en portugués.
# importando os module
from bge import logic as g
import PhysicsConstraints as pc.

C = g, getCurrentController().
# obter a cena e os objetos da cena
s = g, getCurrentScene(), objects.
# no me das rodas
rd_0 = s[0]
rd_1 = s[1]
rd_2 = s[2]
rd_3 = s[3].
# posicao das rodas
rd_p_0 = [ 0.85, 1.6, 0.0]
rd_p_1 = [-0.85, 1.6, 0.0]
rd_p_2 = [-0.85, -1.6, 0.0]
rd_p_3 = [ 0.85, -1.6, 0.0].
# ángulo da suspensao
rd_an_0 = [0.0, 0.0, -1.0]
rd_an_1 = [0.0, 0.0, -1.0]
rd_an_2 = [0.0, 0.0, -1.0]
rd_an_3 = [0.0, 0.0, -1.0].
# eixo
rd_e_0 = [-1.0, 0.0, 0.0]
rd_e_1 = [-1.0, 0.0, 0.0]
rd_e_2 = [-1.0, 0.0, 0.0]
rd_e_3 = [-1.0, 0.0, 0.0].
# alturada suspensao
rd_a_s_0 = 0.5
rd_a_s_1 = 0.5
rd_a_s_2 = 0.5
rd_a_s_3 = 0.5.
# raio das rodas
rd_r_0 = 0.7
rd_r_1 = 0.7
rd_r_2 = 0.7
rd_r_3 = 0.7.
# direcao
rd_d_0 = true
rd_d_1 = true
rd_d_2 = false
rd_d_3 = false.
# obter o objeto conectado, o carro
o = c, owner.
# criando a física
carro = PC, createConstraint(o, getPhysicsId(),0.11
carro = carro, getConstraintId()
o[carro] = carro = PC, getVehicleConsraint(carro).
# add as rodas no carro
carro, addwhel(rd_0, rd_p_0, rd_an_0, rd_e_0, rd_a_s_0, rd_r_0, rd_d_0)
carro, addwhel(rd_1, rd_p_1, rd_an_1, rd_e_1, rd_a_s_1, rd_r_1, rd_d_1)
carro, addwhel(rd_2, rd_p_2, rd_an_2, rd_e_2, rd_a_s_2, rd_r_2, rd_d_2)
carro, addwhel(rd_3, rd_p_3, rd_an_3, rd_e_3, rd_a_s_3, rd_r_3, rd_d_3).
# límite da rotacao do carro, para ele nao capota
carro, setRollinfluence(0.05,0)
carro, setRollinfluence(0.05,1)
carro, setRollinfluence(0.05,2)
carro, setRollinfluence(0.05,3).

ESTA ES PARA CONTROLAR EL CARRO.
# importando os modules
from bge import logic as g, events.
# obter o controle
c = g, getCurrentController().
# obter o objeto conectado o carro
o = c, owner.
# obter o teclado
tc = g.keyboard, events.
# variaveis
freio = 0.0
virar = 0.0
acelerador = - 0.0.
# as teclas que vai muda os valor das varaiaveis
if tc[events.WKEY]: acelerador -= 2500.0
if tc[events. SKEY]: acelerador = 2500.0
if tc[events. AKEY]: virar = 0.5
if tc[events. DKEY]: virar -= 0.5
if tc[events. SPACEKEY]: virar = 70.0.
# obter a física do carro que está no outro script
carro = o[carro].
# aplicar aceleracao nas rodas 0,1,2,3
carro, applyEngineForce(acelerador,0)
carro, applyEngineForce(acelerador,1)
carro, applyEngineForce(acelerador,2)
carro, applyEngineForce(acelerador,3).
# vira roda 0.1
carro. SetSteringValue(virar,0)
carro, setSteringValue(virar,1).
# freia rodas 0,1,2,3
carro, applyBraking(freio,0)
carro, applyBraking(freio,1)
carro, applyBraking(freio,2)
carro, applyBraking(freio,3).

Hasta el momento no me ha funcionado a mí. Debo estar
haciendo algo mal, sin embargo, en estudiado con cuidado
los tutoriales arriba señalados, y no me funciona nada.

Tengo instalada la última versión de Blender, se dice no
necesitar tener Python instalado.

A ver si alguien se mete en este proyecto y me corrige.
Soliman - 23/01/2014 08:53
Creo que le faltan script, s, y no has subido el blend para que lo podamos analizar.

Si quieres mirar este link, donde explica una forma de ponerle las ruedas y controlarlo.
[url]http://www.tutorialsforBlender3d.com/Game_Engine/Vehicle/Vehicle_2.html[/url]
Se puede descargar el blend para versión 2.6.
tattoos3d - 29/12/2014 23:32
A mi se me cierra el Blender y sin ningún error aparente, subo el blend, tengo la versión de Blender 2.72b un Amd apu con 16g de RAM.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #201455

Soliman - 30/12/2014 09:00
[QUOTE=tattos3d;920565]A mi se me cierra el Blender y sin ningún error aparente, subo el blend, tengo la versión de Blender 2.72b un Amd apu con 16g de RAM.[/QUOTE]No entiendo mucho de Python, pero el texto que tienes puesto, creo que lo has copiado de alguna página traducida, por lo que te a cambiado las ordenes por palabras en castellano, que en el lenguaje Python no tienen ningún significado.

No me refiero a los nombres de las ruedas, si no a las ordenes Python como, por ejemplo, escena = lógica, getCurrentScene(), objects
[url]http://www.blender.org/api/Blender_Python_api_2_70_0/bge, types.html[/url].
tattoos3d - 30/12/2014 14:37
SI es del mismo tutorial lo he hecho al igual, pero a mi manera.
tattoos3d - 30/12/2014 14:39
¿Pero a ti se te cierra el Blender como a mí?
tattoos3d - 30/12/2014 14:41
[QUOTE=Soliman;920599]No entiendo mucho de Python, pero el texto que tienes puesto, creo que lo has copiado de alguna página traducida, por lo que te a cambiado las ordenes por palabras en castellano, que en el lenguaje Python no tienen ningún significado.

No me refiero a los nombres de las ruedas, si no a las ordenes Python como, por ejemplo, escena = lógica, getCurrentScene(), objects.
[url]http://www.blender.org/api/Blender_Python_api_2_70_0/bge, types.html[/url].[/QUOTE]Eso son variables y las puedes llamar como te de la gana.
Soliman - 30/12/2014 15:47
Ya te he dicho que no se mucho de Python, pero de todas formas. ¿estás seguro que este texto está bien?
[CODE]
#importando modulos.

From bge import logic as lógica
import PhysicsConstraints as pcontrolador.
#obtener controlador.

Controlador = lógica, getCurrentController().
#obtener objetos de la escena.

Escena = lógica, getCurrentScene(), objects.
#nombre de las ruedas.

Rueda_d_d= [rueda_delantera_derecha]
rueda_d_i= [rueda_delantera_izquierda]
rueda_t_d= [rueda_trasera_derecha]
rueda_t_i= [rueda_trasera_izquierda].
#posiciónando las ruedas.

Rueda_p_d_d = [-1.5, 3.0, 0.0]
rueda_p_d_i = [1.5, 3.0, 0.0]
rueda_p_t_d = [-1.5, -2.5, 0.0]
rueda_p_t_i = [1.5, -2.5, 0.0].
#ángulo de la suspension.

Rueda_an_d_d = [0.0, 0.0, -1.0]
rueda_an_d_i = [0.0, 0.0, -1.0]
rueda_an_t_d = [0.0, 0.0, -1.0]
rueda_an_t_i = [0.0, 0.0, -1.0].
#eje.

Rueda_e_d_d = [-1.0, 0.0, 0.0]
rueda_e_d_i = [-1.0, 0.0, 0.0]
rueda_e_t_d = [-1.0, 0.0, 0.0]
rueda_e_t_i = [-1.0, 0.0, 0.0].
#altura de la suspension.

Rueda_as_d_d = 0.2
rueda_as_d_i = 0.2
rueda_as_t_d = 0.2
rueda_as_t_i = 0.2.
#radio de las ruedas.

Rueda_r_d_d = 0.75
rueda_r_d_i = 0.75
rueda_r_t_d = 0.75
rueda_r_t_i = 0.75.
#dirección.

Rueda_d_d_d = True
rueda_d_d_i = True
rueda_d_t_d = False
rueda_d_t_i = False.
#obtener el objeto conectado al coche.

Objeto = controlador, owner.
#creando la fisica.

Coche = pcontrolador, createConstraint(objeto, getPhysicsId(),0,11)
coche = coche, getConstraintId()
objeto[coche] = coche = pcontrolador, getVehicleConstraint(coche).
#añadir las ruaedas al coche.

Coche, addWhel(rueda_d_d, rueda_p_d_d, rueda_an_d_d, rueda_e_d_d, rueda_as_d_d, rueda_r_d_d, rueda_d_d_d)
coche, addWhel(rueda_d_i, rueda_p_d_i, rueda_an_d_i, rueda_e_d_i, rueda_as_d_i, rueda_r_d_i, rueda_d_d_i)
coche, addWhel(rueda_t_d, rueda_p_t_d, rueda_an_t_d, rueda_e_t_d, rueda_as_t_d, rueda_r_t_d, rueda_d_t_d)
coche, addWhel(rueda_t_i, rueda_p_t_i, rueda_an_t_i, rueda_e_t_i, rueda_as_t_i, rueda_r_t_i, rueda_d_t_i).
#limite de la rotación del coche.

Coche, setRollInfluence(0.05,0)
coche, setRollInfluence(0.05,1)
coche, setRollInfluence(0.05,2)
coche, setRollInfluence(0.05,3).
[/CODE].

Si desconectas el Script de FISICA, ya no se cuelga, por lo que deduzco que será algo del texto que no está bien.

A ver si hay algún programador que nos pueda ayudar. Saludos.