Привіт Я пишу маленький RPG про Мурашок у XNA 4.0. Я зробив клас LoadModel для завантаження моделі fbx та створення обмежуючих сфер. У мене є одна загальна сфера обмеження в моделі, створеній об'єднанням сітки моделі. Тепер я створив модель з додатковою сферою, яка представляє мою обмежувальну сферу в грі. Я просто перевіряю, чи є ім'я Mesh "BoundingSphere", і коли це "я додаю mesh.BoundingSphere до мого масиву bs. Тепер я не знаю, як оновити ці Bs ... Мій спробу коду:
private void buildBoundingSphere()
{
BoundingSphere sphere = new BoundingSphere(Vector3.Zero, 0);
List<BoundingSphere> spheres = new List<BoundingSphere>();
foreach (ModelMesh mesh in Model.Meshes)
{
if (mesh.Name.Contains("BoundingSphere") )
{
BoundingSphere transformed = mesh.BoundingSphere.Transform(modelTransforms[mesh.ParentBone.Index])
spheres.Add(transformed);
sphere = BoundingSphere.CreateMerged(sphere, transformed);
}
}
this.boundingSphere = sphere;
this.spheres = spheres.ToArray();
}
Тепер масив BoundingSphere get / set:
public BoundingSphere[] spheres
{
get
{
// No need for rotation, as this is a sphere
List<BoundingSphere> spheres = new List<BoundingSphere>();
foreach (ModelMesh mesh in Model.Meshes)
{
Matrix worldTransform = Matrix.CreateScale(Scale)* Matrix.CreateTranslation(Position);
if (mesh.Name.Contains("BoundingSphere")) {
BoundingSphere transformed = mesh.BoundingSphere.Transform(worldTransform);
spheres.Add(transformed);
}
}
return spheres.ToArray();
}
set{}
}
У мене є 2 сфери в моделі, і обидві вони знаходяться в одному місці. Дякую за будь-яку підказку
Відповіді:
0 для відповіді № 1Для однієї речі ваш сетер порожній. Якщо ви збираєтеся автоматично створити сетер, використовуйте set;
замість set{}
. Так здається, все, що ви робите в buildBoundingSphere()
втрачено. Перевірте це спочатку.
Ще одна незначна проблема - це ваша обмежувальна сфераакумулятор починається як точка у витоку. Це передбачає, що походження буде знаходитися всередині остаточної сфери, що взагалі не відповідає дійсності. Дійсно, вам слід якось генерувати початкову сферу лише після того, як ви знаєте першу сферу.
Я не можу розповісти нічого більше з цього фрагмента. Якщо ви збираєтеся перетворити всі сфери в геттері, чи це струмове перетворення об'єкта? Шкала та положення не здаються залежними від сітки, яка перетворює сферу, щоб побудова матриці worldTransform могла бути переміщена за межі циклу.