Render.ru

Помогите новичку с костями

Рафаэль Даутов

Пользователь сайта
Рейтинг
2
#1
Здравствуйте уважаемые. В общем хочу небольшую игру сделать с танками. Нашел классный префаб танка т-90, все работает ок. Теперь хочу еще одну новую модель танка абрамса. Нашел модель, добавил адаптировал под скрипты от т-90. Все вроде норм, кроме гусеницы. На новой модели они как бы съезжают чуть в середину. А все из-за того что позиция не посередине как у т-90.
Screenshot_1.png
Здесь видно что положение чуть правее гусеницы
Screenshot_2.png
А здесь видно что посередине. Как это исправить ума не приложу. В unity всего лишь 2-3 недели как разбираюсь.
Screenshot_3.png

Как результат вот такая ерунда. Позиция гусениц меняется я так понял от центра wheel collider вот кусочек кода правого трака.
//Right Wheels Transform.
for (int k = 0; k < wheelColliders_R.Length; k++)
{

Vector3 ColliderCenterPoint = wheelColliders_R[k].transform.TransformPoint(wheelColliders_R[k].center);

if (Physics.Raycast(ColliderCenterPoint, -wheelColliders_R[k].transform.up, out hit, (wheelColliders_R[k].suspensionDistance + wheelColliders_R[k].radius) * transform.localScale.y))
{
wheelTransform_R[k].transform.position = hit.point + (wheelColliders_R[k].transform.up * wheelColliders_R[k].radius) * transform.localScale.y;
trackBoneTransform_R[k].transform.position = hit.point + (wheelColliders_R[k].transform.up * trackOffset) * transform.localScale.y;
}
else
{
wheelTransform_R[k].transform.position = ColliderCenterPoint - (wheelColliders_R[k].transform.up * wheelColliders_R[k].suspensionDistance) * transform.localScale.y;
trackBoneTransform_R[k].transform.position = ColliderCenterPoint - (wheelColliders_R[k].transform.up * (wheelColliders_R[k].suspensionDistance + wheelColliders_R[k].radius - trackOffset)) * transform.localScale.y;
}
//trackBoneTransform_R[k].transform.position = new Vector3(ColliderCenterPoint.x+0.55f, trackBoneTransform_R[k].transform.position.y, trackBoneTransform_R[k].transform.position.z);

wheelTransform_R[k].transform.rotation = wheelColliders_R[k].transform.rotation * Quaternion.Euler(rotationValueR[Mathf.CeilToInt((wheelColliders_R.Length) / 2)], 0, 0);
rotationValueR[k] += wheelColliders_R[k].rpm * (6) * Time.deltaTime;

}
 
Сверху