Je suis assez nouveau pour le développement xna et je veux positionner les cubes du Primitives3D sample en passant un vecteur de position au constructeur .. Malheureusement, cela ne fonctionne pas .. au lieu de cela il tourne juste autour ..Positionner des objets 3D dans xna
est comment i modifié le code de la classe cubeprimitive:
public class CubePrimitive : GeometricPrimitive
{
public Vector3 position;
/// <summary>
/// Constructs a new cube primitive, using default settings.
/// </summary>
public CubePrimitive(GraphicsDevice graphicsDevice)
: this(graphicsDevice, 1, new Vector3(-3,0,0))
{
}
/// <summary>
/// Constructs a new cube primitive, with the specified size.
/// </summary>
public CubePrimitive(GraphicsDevice graphicsDevice, float size, Vector3 posi)
{
this.position = posi;
// A cube has six faces, each one pointing in a different direction.
Vector3[] normals =
{
new Vector3(0, 0, 1),
new Vector3(0, 0, -1),
new Vector3(1, 0, 0),
new Vector3(-1, 0, 0),
new Vector3(0, 1, 0),
new Vector3(0, -1, 0),
};
// Create each face in turn.
foreach (Vector3 normal in normals)
{
// Get two vectors perpendicular to the face normal and to each other.
Vector3 side1 = new Vector3(normal.Y, normal.Z, normal.X);
Vector3 side2 = Vector3.Cross(normal, side1);
// Six indices (two triangles) per face.
AddIndex(CurrentVertex + 0);
AddIndex(CurrentVertex + 1);
AddIndex(CurrentVertex + 2);
AddIndex(CurrentVertex + 0);
AddIndex(CurrentVertex + 2);
AddIndex(CurrentVertex + 3);
// Four vertices per face.
AddVertex(posi+(normal - side1 - side2) * size/2, normal);
AddVertex(posi + (normal - side1 + side2) * size/2, normal);
AddVertex(posi + (normal + side1 + side2) * size/2, normal);
AddVertex(posi + (normal + side1 - side2) * size/2, normal);
}
InitializePrimitive(graphicsDevice);
}
}
Pouvez-vous s'il vous plaît me montrer comment modifier correctement? .. merci d'avance :)