Чтобы ограничить только одну векторную ось в единице

Я новичок в stackoverflow, так что привет, ребята!

И снова я новичок в Unity. У меня проблема с ограничением моего объекта. (Извините за мой английский, если он не так хорош.) Я хочу ограничить свой объект игрока, но только по одной оси. Y равен 0,0f и Z не зависит от ограничения. Можем ли мы выполнить эту работу, используя MathF.clamp с жестким телом? Если мы не можем, как я могу решить эту проблему, набрав C #, а не используя Box и отключив MeshCollider и добавив коллайдер. Спасибо за заранее :)


person bdr b    schedule 06.04.2015    source источник
comment
Какие компоненты имеет ваш объект игрока? Как он движется? Вам нужно предоставить более подробную информацию об этом, иначе мы можем только догадываться, каково решение.   -  person Zach Thacker    schedule 06.04.2015


Ответы (2)


Код не нужен. Посмотрите на ограничения Rigidbody.

http://docs.unity3d.com/ScriptReference/Rigidbody-constraints.html

person Can Baycay    schedule 06.04.2015
comment
Спасибо за ваш интерес. это может быть полезно. - person bdr b; 07.04.2015

Да, вы правы, может быть, я должен быть более конкретным. теперь мой код работает. старая и выпущенная часть была похожа --->

Hareket — предопределенное значение, а граница — общедоступная граница;

...

GetComponent<Rigidbody>().Velocity=Hareket; LastZ = GetComponent<Rigidbody>().position.z; GetComponent<Rigidbody>().position = new Vector3 ( Mathf.Clamp (GetComponent<Rigidbody>().position.x,boundary.xMin, boundary.xMax), 0.68f, Mathf.Clamp (GetComponent<Rigidbody>().position.z,0f, LastZ) );

....

Но я не должен был использовать последнюю часть как Mathf.Clamp (GetComponent<Rigidbody>().position.z,0f, LastZ), но это должно было быть только значение LastZ.

А также, чтобы сохранить эффект вращения на сфере, часть GetComponent<Rigidbody>().Velocity=Hareket; должна быть GetComponent<Rigidbody>()AddForce(Hareket); ...

Спасибо .

person bdr b    schedule 06.04.2015