#c# #unity3d
Вопрос:
Эй, ребята, я пытался запрограммировать двойной прыжок для своего 3D-шутера от первого лица. Это вроде как работает, но не так, как ожидалось. Если я попаду в пробел, игрок прыгнет на высоту 800, но предполагается, что он прыгнет на 500, а если вы снова попадете в пробел, то на 300. Кто-нибудь, пожалуйста, может мне помочь?
void Start()
{
rig = GetComponent<Rigidbody>();
}
void Update()
{
//Keys
bool jump = Input.GetKeyDown(KeyCode.Space);
//Statics
bool isGrounded = Physics.CheckSphere(groundDetector.position, 0.1f, ground);
bool isJumping = jump amp;amp; isGrounded;
bool isSneaking = sneak;
bool isSliding = !isSneaking amp;amp; slide amp;amp; !slideing amp;amp; !slideStop amp;amp; isGrounded;
if (isGrounded)
{
print("vallah");
jumpCount = 0;
}
//Jump
if (isJumping amp;amp; isGrounded amp;amp; !isSliding amp;amp; !isSneaking)
{
rig.AddForce(Vector3.up * jumpForce);
jumpCount ;
if (jumpCount > 0 amp;amp; jumpCount < 2 amp;amp; jump)
{
rig.AddForce(Vector3.up * secondJunp);
}
}
}
Ответ №1:
Вам нужно изменить последнюю инструкцию if, чтобы обработать количество прыжков:
if (isJumping amp;amp; (jumpCount <= 2) amp;amp; !isSliding amp;amp; !isSneaking)// HERE <--
{
// Increase Jump Count
jumpCount ;
// First check the jump number
if (jumpCount == 1)
{
rig.AddForce(Vector3.up * jumpForce);
}
else if (jumpCount == 2)
{
rig.AddForce(Vector3.up * secondJunp);
}
}
Комментарии:
1. Спасибо за быстрый ответ. Это сработало так здорово, спасибо тебе.