aka Blue Posted December 27, 2016 Share Posted December 27, 2016 Buenas. Quiero crear un sistema de intermitentes con imágenes y me gustaría saber cómo es que puedo obtener ciertas partes de un vehículo, es decir, algo como ésto: http://i.imgur.com/MsSHHRL.png Mi idea sería, obtener esas posiciones para dibujar imágenes en ellas. Link to comment
Arsilex Posted March 11, 2017 Share Posted March 11, 2017 Que yo sepa solo se puede hacer separando la textura de los faros del vehículo es decir separas los faros y les asignas una nueva textura a la cual dentro del juego mediante shader aplicas una u otra imagen depende del estado del intermitente. Link to comment
aka Blue Posted March 11, 2017 Author Share Posted March 11, 2017 Con vector creo que se obtenía la parte trasera del vehículo, es lo que quiero hacer. Link to comment
Arsilex Posted March 11, 2017 Share Posted March 11, 2017 Aunque obtengas la posiciones exactas para cada vehículo de los faros traseros y delanteros y tal no podrás de ninguna manera remplazar la textura de ellos si no los tienes separados bueno podrías también remplazar la textura general de los vehículos cada vez que usas el intermitente puede que funcione Link to comment
aka Blue Posted March 11, 2017 Author Share Posted March 11, 2017 @Arsilex El tema no es reemplazar la textura (eso ya lo sé, hay una textura de los faros, con un poco de edición en photoshop y shaders puedo aplicar y quitar para hacer el efecto de intermitente), sino, dibujar en esa posición. Algo como esto: x, y, z = posicionfaro x1, y1 = getScreenFromWorldPosition( x, y, z ) dxDrawText( "←", x1, y1, x1, y1 ) Link to comment
Arsilex Posted March 11, 2017 Share Posted March 11, 2017 Usando esta funcion function getElementMatrix(element) local rx, ry, rz = getElementRotation(element, "ZXY") rx, ry, rz = math.rad(rx), math.rad(ry), math.rad(rz) local matrix = {} matrix[1] = {} matrix[1][1] = math.cos(rz)*math.cos(ry) - math.sin(rz)*math.sin(rx)*math.sin(ry) matrix[1][2] = math.cos(ry)*math.sin(rz) + math.cos(rz)*math.sin(rx)*math.sin(ry) matrix[1][3] = -math.cos(rx)*math.sin(ry) matrix[1][4] = 1 matrix[2] = {} matrix[2][1] = -math.cos(rx)*math.sin(rz) matrix[2][2] = math.cos(rz)*math.cos(rx) matrix[2][3] = math.sin(rx) matrix[2][4] = 1 matrix[3] = {} matrix[3][1] = math.cos(rz)*math.sin(ry) + math.cos(ry)*math.sin(rz)*math.sin(rx) matrix[3][2] = math.sin(rz)*math.sin(ry) - math.cos(rz)*math.cos(ry)*math.sin(rx) matrix[3][3] = math.cos(rx)*math.cos(ry) matrix[3][4] = 1 matrix[4] = {} matrix[4][1], matrix[4][2], matrix[4][3] = getElementPosition(element) matrix[4][4] = 1 return matrix end Pero claro la cosa esta en sacar el offset de cada vehículo a mano. Sigo pensando que es mucho mas eficiente y rápido editar el archivo .dff para dejar los faros como un componente y con la función getVehicleComponentPosition con el valor de base="root" sacar la posición exacta. Link to comment
aka Blue Posted March 11, 2017 Author Share Posted March 11, 2017 @Arsilex ¿Dejarlo como un componente? ¿Cómo sería eso posible? Link to comment
MisterQuestions Posted April 6, 2017 Share Posted April 6, 2017 On 11/3/2017 at 16:08, Arsilex said: Usando esta funcion function getElementMatrix(element) local rx, ry, rz = getElementRotation(element, "ZXY") rx, ry, rz = math.rad(rx), math.rad(ry), math.rad(rz) local matrix = {} matrix[1] = {} matrix[1][1] = math.cos(rz)*math.cos(ry) - math.sin(rz)*math.sin(rx)*math.sin(ry) matrix[1][2] = math.cos(ry)*math.sin(rz) + math.cos(rz)*math.sin(rx)*math.sin(ry) matrix[1][3] = -math.cos(rx)*math.sin(ry) matrix[1][4] = 1 matrix[2] = {} matrix[2][1] = -math.cos(rx)*math.sin(rz) matrix[2][2] = math.cos(rz)*math.cos(rx) matrix[2][3] = math.sin(rx) matrix[2][4] = 1 matrix[3] = {} matrix[3][1] = math.cos(rz)*math.sin(ry) + math.cos(ry)*math.sin(rz)*math.sin(rx) matrix[3][2] = math.sin(rz)*math.sin(ry) - math.cos(rz)*math.cos(ry)*math.sin(rx) matrix[3][3] = math.cos(rx)*math.cos(ry) matrix[3][4] = 1 matrix[4] = {} matrix[4][1], matrix[4][2], matrix[4][3] = getElementPosition(element) matrix[4][4] = 1 return matrix end Pero claro la cosa esta en sacar el offset de cada vehículo a mano. Sigo pensando que es mucho mas eficiente y rápido editar el archivo .dff para dejar los faros como un componente y con la función getVehicleComponentPosition con el valor de base="root" sacar la posición exacta. Evita todo esto con OOP & .matrix De ahi puedes hacer :transformPosition(Vector3(offset)). Link to comment
Recommended Posts