Os he puesto este problema porque está muy relacionado con el verdadero problema que os cuento a continuación:
Como sabreis estoy haciendo un minitutorial sobre como hacer un First Person Shooter sencillo, he hecho una escena tridimensional por la que me puedo mover y apuntar libremente llevando conmigo un arma y he introducido además objetos tridimensionales.
He sido capaz de hacer que un arma dispare balas (esferas).
He empezado con colisiones, cuando disparo a un cubo hago que se genere un plano pequeñito con textura de balazo a modo de balazo en la pared allí donde se ha generado el impacto.
Disparando a un cubo soy capaz de generar el balazo de impacto, disparando a un cilindro y a una esfera también soy capaz, pero con un dodecahedro no hay forma, no se dibuja mi plano donde debe sino al lado opuesto y más alejado del dodecahedro.
Os pongo mi código:
Código:
Obj.RayCastIntersect(Bullet.Position.AsVector,Bullet.Direction.AsVector,@Point,@Normal);
With TGLPlane(mundo.AddNewChild(TGLPlane)) Do
begin
AbsolutePosition:=Point;
AbsoluteDirection:=Normal;
Width:=1;
Height:=1;
Material.MaterialLibrary:=GLMaterialLibrary1;
Material.LibMaterialName:='balazo';
end;
Proyectil.Destroy; //Destruyo el proyectil para que no atraviese.
Para el cubo uso: BoundingMode --> cmbCube
Para el cilindro uso: BoundingMode --> cmbFaces
Para la esfera utilizo: BoundingMode --> cmbSphere
La propiedad GroupIndex siempre la dejo a 0.
De todas formas puedo pasar sin meter dodecahedros en el juego pero si tengo problemas con las coordenadas de un dodecahedro no me quiero ni imaginar los problemas que tendré al disparar a un personaje o a una casa o a un coche. Miedo me da.
Un saludo.