Una vez que tu vehiculo a sido importado a UnrealEd, ve a View|BoneNames y asegurate que este marcado.
Ahora presiona View Wireframe.
Ahora presiona View Bones tres veces asi puedes ver los huesos y la malla a la vez.
Tu modelo deberia ser semejante a esto:
Es util que mantengas esto a la vista cuando añades una nueva clase de vehiculos asi puedes referenciar los nombres de los huesos, etc.
Ahora, comenzare creando una subclase en ONSWheeledCraft, y copiando las propiedades default de ONSRV como punto de partida, ya que este vehiculo es muy similar al Scorpion.
Hay un montond e propiedades con las que lidiar, pero lo primero que hare sera remover las propiedades especificas de la clase Scorpion.
ArmExtendSound
ArmRetractSound
BladeBreakSound
ArmExtendForce
ArmRetractForce
Tambien podemos remover la propiedad bReplicateAnimations.
Ahora voy a setear las propiedades basicas. Comenzando por la malla.
Mesh=Mesh’ONSVehicles-A.RV’
Se vuelve:
Mesh=Mesh’RaceCarMeshes.RaceCar’
El resto de las propiedades puede quedar igual, excepto por el arreglo de las ruedas. Aqui es donde es conveniente tener el editor abierto asi puedes referenciar los huesos correctos. Esta es la rueda derecha trasera del Scorpion:
Begin Object Class=SVehicleWheel Name=RRWheel
BoneName=”tire02”
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Z
BoneOffset=(X=0,Y=7.0,Z=0.0)
WheelRadius=24
bPoweredWheel=True
bHandbrakeWheel=True
SteerType=VST_Fixed
SupportBoneAxis=AXIS_X
SupportBoneName=”RRearStrut”
End Object
Wheels(0)=SVehicleWheel’RRWheel’
Antes de entrar en las definiciones de estas propiedades, es importante entender la diferencia entre el objeto rueda el el sistema de fisicas ve y la rueda que es renderizada para que el jugador vea.
El artista que creo el vehiculo coloco las ruedas en el lugar donde penso que seria ideal. Esta es la rueda que sera renderizada. Sin embargo, podras notar, una vez que tengas el vehiculo en el juego, el minimo cambio de direccion causa que el vehiculo haga trompos debido a que las ruedas no estan lo suficientemente separadas. Ajustar las ruedas que son renderizadas puede hacer que el vehiculo parezca ridiculo,asi que, el sistema de fisicas tiene su propia rueda a la que le puedes hacer los cambios que quieras sin afectar la apariencia del vehiculo. Ciertas propiedades en la definicion de rueda objeto afectan a la rueda a renderizar y otras a la rueda fisica.
Puedes cambiar el nombre de la definicion de objeto rueda en RRWheel si quieres. No importa como lo llames en cuanto uses el mismo nombre en la ultima linea donde asignas la definicion de objeto a Wheels(0). Yo usualmente utilizo el mismo nombre que tiene el hueso por conveniencia, pero el nombre del hueso actual se coloca en la siguiente propiedad.
La propiedad BoneName corresponde al nombre de la rueda trasera derecha de nuestro modelo. El lugar de este hueso debe ser el centro de la rueda a renderizar y se utiliza como punto para determinar donde girara la rueda.
BoneName=”RightRearTire”
BoneRollAxis y BoneSteerAxis estan para setear el eje del hueso donde la rueda a renderizar debera rotar y girar respectivamente. Esto permite un poco de flexibilidad, pero es altamente recomendado importar el modelo con todos los huesos orientados con los ejes del mundo Unreal: X=Adelante, Y=Derecha, Z=Arriba
Asumiendo que importaste el modelo de esta manera, BoneRollAxis siempre debera ser Y y BoneSteerAxis siempre debera ser Z (a menos que realmente tengas un modelo de vehiculo extraño).
La propiedad BoneOffset es la diferencia entre el centro de la rueda a renderizar y el centro de la rueda fisica. como puedes ver en la definicion de rueda del Scorpion, la rueda fisica se encuentra 7.0 unidades hacia la derecha, ensanchando efectivamente las ruedas traseras sin cambiar la apariencia de las ruedas a renderizar. Por supuesto, no querras que haya una gran diferencia ya que sera obvio que el vehiculo no se estara apoyando en las ruedas renderizadas.Esta propiedad puede quedar asi, es mejor retocarla una vez testeado en juego.
La propiedad WheelRadius es una propiedad de la rueda fisica, pero afecta la rueda a renderizar en una manera. Esta define la distancia desde el centro de la rueda fisica hasta el suelo. Queras que el radio sea exactamente el mismo que el de la rueda a renderizarya que el chasis del vehiculo se apoya en las ruedas fisicas. Asi que si tienes unas ruedas a 30 unidades de altura y tus ruedas a renderizar se encuentran a 25, el vehiculo flotara 5 unidades sobre el suelo.
De todas maneras, si quieres o necesitas que tengan radios diferentes, puedes arreglar esto ajustando BoneOffset 5 unidades en la direccion Z. Esto coloca el centro de la rueda fisica 5 unidades mas arriba que la rueda a renderizar asi que las dos ruedas deberian tocar el suelo a la vez.
Podremos jugar con diferentes tamaños de ruedas luego, asi que por ahora dejare WheelRadius en 26.5 que es exactamente el tamaño de la rueda a renderizar.
bPoweredWheel define si la rueda se utiliza para impulsar el vehiculo o no. Pudes ajustar esto para las ruedas de adelante o las de atras, o las 4 a la vez. Este es un vehiculo todo terreno, asi que lo dejare para todas las ruedas.
bHandBrakeWheel es para las ruedas que son afectadas por el freno de mano.
SteerType permite 3 selecciones:
VST_Fixed
VST_Steered
VST_Inverted
VST_Fixed hace que la rueda este fija y no se pueda girar. VST_Steered permite que la rueda pueda girar alrededor de BoneSteerAxis cuando el conductor gira a la izquierda o a la derecha. Usualmente esto es para las ruedas de adelante. VST_Inverted es igual que VST_Steered solo que las ruedas giran en sentido contrario. Esto tiene dos usos. La primera es cuando no alineaste los huesos con los ejes del mundo Unreal y te encuentras con que giras en la direccion contraria. La otra es cuando quieres un vehiculo de 4 ruedas como el Jeep de Halo. Puedes colocarles a las ruedas de adelante la opcion VST_Steered y a las de atras la opcion VST_Inverted.
SupportBoneAxis es el eje en donde los huesos de soporte rotan. El hueso de soporte permite tener suspensiones que roten junto con las ruedas. Este vehiculo tiene soportes que rotan en el eje Y asi que necesito cambiar esta linea:
SupportBoneAxis=AXIS_Y
El SupportBoneName es el nombre del hueso de soporte.
SupportBoneName=”RightRearSusp”
Asi que la definicion final seria esta:
Begin Object Class=SVehicleWheel Name=RightRearTire
BoneName=”RightRearTire”
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Z
BoneOffset=(X=0,Y=7.0,Z=0.0)
WheelRadius=26.5
bPoweredWheel=True
bHandbrakeWheel=True
SteerType=VST_Fixed
SupportBoneAxis=AXIS_Y
SupportBoneName=”RightRearSusp”
End Object
Wheels(0)=SVehicleWheel’RightRearTire’
Ahora hare lo mismo con las demas ruedas colocando los nombres de los huesos aporpiados y asegurandome que las ruedas delanteras tengan la opcion VST_Steered. Mis ruedas delanteras tambien tienen un radio menos que las traseras.
Ahora que terminamos, el vehiculo deberia ser manejable en el juego. Abre un mapa Ons y en la consola tipea:
summon RaceCarPack.MyRaceCar
Si encuentras que tu vehiculo no tiene la escala correcta recomiendo que lo escales y lo vuelvas a importar. Es mas trabajoso asi, pero el sistema de fisicas trabaja mejor con vehiculos que no hayan sido escalados en el juego.
Si encuentras que las ruedas no giran en el eje correcto o el vehiculo se conduce de una manera "divertida", probablemente necesitaras ajustar las ruedas y colocarlas en el eje correcto. En ciertos casos encesitaras corregir los ejes y re importar. Esta es una de las razones por las que recomiendo alinear todos los ejes con los del mundo Unreal. Puedes ver las ruedas fisicas en el juego desactivando el skybox con el comando "show sky" y usando el otro comando "kdraw wheel".
Si todo es correcto podras utilizar tu vehiculo.