Я очень новичок в Unity, я слежу за рядом видеоуроков и других тем с близкими задачами в примерах.
Проблема должна быть общей для новичков ie, однако я еще не сделал нашел ответ.
Чтобы переместить капсулу по сфере, я использовал PlayerMovementScript.cs в капсуле Player Инспектор:
public class PlayerMovementScript : MonoBehaviour {
public float moveSpeed;
private Vector3 moveDirection;
void Update()
{
moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized;
}
void FixedUpdate()
{
GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + transform.TransformDirection(moveDirection) * moveSpeed * Time.deltaTime);
}
}
и PlayerGravityBody.cs :
public class PlayerGravityBody : MonoBehaviour {
public PlanetScript attractorPlanet;
private Transform playerTransform;
void Start()
{
GetComponent<Rigidbody>().useGravity = false;
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
playerTransform = transform;
}
void FixedUpdate()
{
if (attractorPlanet)
{
attractorPlanet.Attract(playerTransform);
}
}
}
прикреплен к PlanetScript.cs :
public class PlanetScript : MonoBehaviour {
public float gravity = -12;
public void Attract(Transform playerTransform)
{
Vector3 gravityUp = (playerTransform.position - transform.position).normalized;
Vector3 localUp = playerTransform.up;
playerTransform.GetComponent<Rigidbody>().AddForce(gravityUp * gravity);
Quaternion targetRotation = Quaternion.FromToRotation(localUp, gravityUp) * playerTransform.rotation;
playerTransform.rotation = Quaternion.Slerp(playerTransform.rotation, targetRotation, 50f * Time.deltaTime);
}
}
Работает нормально, как и ожидалось в приведенных примерах, жесткая капсула тело движется вокруг сферы с отдельными кубами, включая меня sh рендерер и меня sh сфера и сферический коллайдер:
я пытаюсь построить 3D-игру, в которой персонаж-гуманоид анимации обходит сферу pl anet.
Я пытаюсь выяснить, какой метод моделирования и анимации должен быть наиболее подходящим в моем случае, если моя цель - архивировать персонаж с желаемым результатом способности двигаться с ходьбой t вперед, остановка без действия, поворот лицевой стороны тела с изменением направления вперед, если идет вправо или влево с помощью кнопок со стрелками, и go назад.
Я скачал Анимация ходьбы и добавил его в проект с тем же PlayerGravityBody.cs , PlanetScript.cs и для управления другим PlayerAnimationControl.cs сценарием:
public class PlayerAnimationControl : MonoBehaviour
{
public Animator anim;
void Update()
{
anim.SetFloat("vertical", Input.GetAxis("Vertical"));
anim.SetFloat("horizontal", Input.GetAxis("Horizontal"));
}
}
подключен к настройке контроллера аниматора:
Я не уверен , если я проверяю подходящую анимацию должным образом, в Motion я вижу mixamo.com, так что кажется, что я использую или делаю что-то неправильно с попыткой прикрепить движение для изменения направления, и я не знаю, как L oop В этом случае следует использовать время, но основная проблема заключается в том, что анимация не идет по поверхности pl anet.
Быстро или медленно, в зависимости от значения силы тяжести, которое в моем случае равно -12 , он начинает идти над сферой, непрерывно окружая ее накопление и постепенно проходит, вниз под сферной поверхностью пл anet, тонет, как будто постепенно входит в воду, вот так:
Любое руководство, совет или пример будут полезны