Actualmente tengo un problema relacionado con el dibujo de Gizmos. Este problema es específico de 2 clases.
Interactuable() y Puerta() : Interactuable()
dentro de Interactable() tengo:
void OnDrawGizmos () { Gizmos.color = Color.grey; if (transform.parent != null) { Gizmos.DrawWireSphere ( transform.parent.position, interactionDist ); } else { Gizmos.DrawWireSphere ( transform.position, interactionDist ); } }se está utilizando para el área de interacción (con respecto a la puerta, son hijos del Marco de la puerta)
y dentro de Door() : Interactible()
void OnDrawGizmos () { Gizmos.matrix = transform.parent.localToWorldMatrix; Gizmos.color = Color.yellow; Gizmos.DrawWireCube ( openDistance, Vector3.one); }El problema es que Gizmo creado dentro de Door() se muestra correctamente, mientras que Wire Sphere de Interactable() falta por completo.
Pero para otros scripts que heredan de Interactable() muestra Gizmos correctamente
La única diferencia que puedo pensar es que otros scripts que heredan de este comportamiento no tienen la clase OnDrawGizmos() .
¿Alguien podría indicarme en qué dirección podría dibujarlos a ambos al mismo tiempo?
Gracias.
Editar: después de un pequeño cambio y la respuesta de rustyBucketBay funcionó para mí. Lo siento por la gran cantidad de ediciones.
Código actualizado:
new void OnDrawGizmos () { base.OnDrawGizmos (); Gizmos.color = Color.yellow; Gizmos.DrawWireCube (transform.parent.position + openDistance, Vector3.one ); }Necesitaba comentar Gizmos.matrix = transform.parent.localToWorldMatrix; para ver el cubo amarillo.
Para ver ambos, debe llamar a OnDrawGizmos() de la clase base en OnDrawGizmos() de la clase secundaria de esta manera:
void OnDrawGizmos() { base.OnDrawGizmos(); //Gizmos.matrix = transform.parent.localToWorldMatrix; Gizmos.color = Color.yellow; Gizmos.DrawWireCube(transform.position, Vector3.one); }