Мой 3-й шар непрерывно двигался в прямом направлении, поэтому я хочу дать X-вращение для этого плюса. Игрок перетаскивал мяч горизонтально на экране, поэтому для этого горизонтального движения я хочу дать Z-вращение.
Чтобы достичь моего желания, в результате я создал объекты игры с родителями и детьми с мячом, где родительский объект игры содержит только коллайдер и твердое тело, и это будет выполнять фактическое физическое движение.С другой стороны, дочерний игровой объект содержит только рендеринг сетки, он будет вращаться по желанию.
Следующее изображение дает вам больше представления о моей структуре:
Ball Parent:
Дочерний мяч: ![enter image description here](https://i.stack.imgur.com/dXW7Y.png)
Для придания вращению шаровой сетке, как у родительского физического шара, я написал этот код:
public class BallMeshRolling : MonoBehaviour
{
private Vector3 ballLastPosition;
void Start ()
{
ballLastPosition = transform.parent.position;
}
void Update ()
{
//implementation-1
//float speed = Vector3.Distance (transform.parent.position, ballLastPosition) * 30f;
//transform.RotateAround (transform.position, Vector3.right, speed);
//implementation-2
//Vector3 differenceInPosition = (transform.parent.position - ballLastPosition).normalized;
//transform.Rotate (differenceInPosition * 10f);
//implementation-3
Vector3 differenceInPosition = (transform.parent.position - ballLastPosition).normalized * 50f;
Quaternion rotation = Quaternion.LookRotation(differenceInPosition);
transform.rotation = rotation;
ballLastPosition = transform.parent.position;
}
}
Но ни один из вышеперечисленных способов не работает должным образом, поэтому я ожидаю, что с вашей стороны появятся и другие лучшие предложения.
РЕДАКТИРОВАТЬ: В целом я пытаюсь добиться чего-то вродеэто: Догнать - Ketchapp - Рекорд 1274