Мне нужно взобраться по стенам куба, я написал код, чтобы перевернуть куб, но мне также нужно перебираться через стену при попадании в него.
Я попробовал Box-Collider и твердое тело и изменил положение игрока в кубе и установил положение стены.
// roll a cube player
IEnumerator moveLeft()
{
for (int i = 0; i < (90 / step); i++)
{
Player.transform.RotateAround(Left.transform.position,
Vector3.forward, step);
yield return new WaitForSeconds(speed);
}
Center.transform.position = Player.transform.position;
input = true;
}
// try to Climb a wall
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("hill"))
{
//collider = collision.gameObject;
//isGrounded = false;
Player.GetComponent<Rigidbody>().drag = 20;
Player.GetComponent<Rigidbody>().useGravity = false;
}
if (collision.gameObject.CompareTag("floor"))
{
Player.GetComponent<Rigidbody>().drag = 1;
Player.GetComponent<Rigidbody>().useGravity = true;
isGrounded = true;
}
}
Он взбирается, но не защелкивается со стеной.Мне нужно взбираться на стены в режиме привязки, и если стены нет, игрок должен быть уронен.
Мне нужно, чтобы в видео было показано следующее свойство
https://www.youtube.com/watch?v=fo-7kKeb-TM
Изображение движения моего игрока
Я также попробовал следующий код, но безуспешно.
void moveLeft()
{
rotationModifier = 90f;
appliedVector = Vector3.left;
appliedRotation = Quaternion.AngleAxis(90f, Vector3.forward);
previousPosition = rb.position;
previousRotation = rb.rotation;
targetPosition = previousPosition + appliedVector;
targetRotation = previousRotation * appliedRotation;
Player.transform.position = targetPosition;
Player.transform.rotation = targetRotation;
}