Задать вопрос
@joker66

Как в Unity реализовать автоматическое подпрыгивание физического объекта при движении?

С помощью данного кода перемещаю физический объект:

public class PlayerMove : MonoBehaviour
{
public float Speed;
public float JumpForce;
private float _shiftSpeed;
public float _friction;
public bool IsGround;
private float _groundDrag = 6f;
private float _airDrag = 2f;
public float AirMultiplier = 0.3f;
public Rigidbody Rigidbody;

void Update()
{
ControlDrag();

if (IsGround)
{
if (Input.GetKeyDown(KeyCode.Space))
{
Rigidbody.AddForce(Vector3.up * JumpForce, ForceMode.VelocityChange);
}
}
}
private void FixedUpdate()
{
if (Input.GetKey(KeyCode.LeftShift))
{
_shiftSpeed = 1.5f;
}
else
{
_shiftSpeed = 1;
}

if (IsGround == false)
{
Rigidbody.AddForce(Input.GetAxisRaw("Hor izontal") * Speed * AirMultiplier, 0, 0, ForceMode.VelocityChange);
}
if (IsGround)
{
Rigidbody.AddForce(Input.GetAxisRaw("Hor izontal") * Speed * _shiftSpeed, 0, 0, ForceMode.VelocityChange);
}
if (IsGround)
{
Rigidbody.AddForce(-Rigidbody.velocity.x * _friction, 0, 0, ForceMode.VelocityChange);
}
}
void ControlDrag()
{
if (IsGround)
{
Rigidbody.drag = _groundDrag;
}
else
{
Rigidbody.drag = _airDrag;
}
}
private void OnCollisionStay(Collision collision)
{
for (int i = 0; i < collision.contactCount; i++)
{
float angle = Vector3.Angle(collision.contacts[i].normal, Vector3.up);
if (angle < 45f)
{
IsGround = true;
}
}
}
private void OnCollisionExit(Collision collision)
{
IsGround = false;
}
}

Помогите реализовать автоматическое подпрыгивание как в данном ролике: https://www.youtube.com/watch?v=H4y6_WrkdIQ&t=20s
  • Вопрос задан
  • 17 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы