Пятница, 29 Марта 2024, 18:20

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт движения и прыжка. (Движение работает, прыгает редко даже если на земле.)
Скрипт движения и прыжка.
BassPiraT92Дата: Воскресенье, 18 Февраля 2018, 12:49 | Сообщение # 1
участник
Сейчас нет на сайте
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovePlayerTwo : MonoBehaviour {
    public float speed = 1.0f;
    float gravity = 20f;
    public float jumpForce = 10f;

    Vector3 direction;
    CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update () {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
        if (controller.isGrounded)
        {
            direction = new Vector3(x, 0f, z);
            direction = transform.TransformDirection(direction) * speed;

            if (Input.GetKeyDown(KeyCode.Space) & controller.isGrounded)
            {
                direction = new Vector3(x, transform.position.y * jumpForce, z);
            }
        }
        direction.y -= gravity * Time.deltaTime;
        controller.Move(direction * Time.deltaTime);
    }
}


подскажите почему редко прыгает при нажатии на пробел...
drcrackДата: Воскресенье, 18 Февраля 2018, 13:13 | Сообщение # 2
старожил
Сейчас нет на сайте
controller.isGrounded баганый, зависит от FPS и вообще нормально не работает, лучше просто не юзай его
BassPiraT92Дата: Воскресенье, 18 Февраля 2018, 13:21 | Сообщение # 3
участник
Сейчас нет на сайте
drcrack, как лучше реализовать прыжок отдельно? Потому что только через controller.isGrounded реализовал правильное управление за камерой.
drcrackДата: Воскресенье, 18 Февраля 2018, 13:28 | Сообщение # 4
старожил
Сейчас нет на сайте
Сделай свой isGrounded на основе рейкастов
BassPiraT92Дата: Воскресенье, 18 Февраля 2018, 14:54 | Сообщение # 5
участник
Сейчас нет на сайте
drcrack, Глянь норм или лучше что то добавить\откорректировать?
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveScript : MonoBehaviour {

    private GameObject Player;
    public float speedFl=5f;
    public float JumpForce = 10f;
    Rigidbody rb;
    [SerializeField]
    private bool isGrounded=false;

    void Start () {
        Player = this.gameObject;
        rb = Player.GetComponent<Rigidbody>();
        
    }

    private void OnCollisionStay(Collision collision)
    {
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = true;
        }
        else
        {
            isGrounded = false;
        }
    }
    private void OnCollisionExit(Collision collision)
    {
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = false;
        }
    }

    void FixedUpdate () {
        if (Input.GetKey(KeyCode.A))
        {
            Player.transform.Translate(Vector3.left* speedFl*Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.D))
        {
            Player.transform.Translate(Vector3.right*speedFl*Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.Space)&isGrounded==true)
        {
            rb.AddForce(0, rb.transform.position.y * JumpForce, 0, ForceMode.VelocityChange);
        }
    }
}
drcrackДата: Воскресенье, 18 Февраля 2018, 15:05 | Сообщение # 6
старожил
Сейчас нет на сайте
Да вроде должно работать, тести

Код
if (Input.GetKey(KeyCode.Space)&isGrounded==true)

Вот тока странное место — во-первых почему &, когда лучше &&, во-вторых зачем == true?
Код
if (Input.GetKey(KeyCode.Space) && isGrounded)

^ вот так лучше

PS Ну и эт, старайся стиль кода выдерживать один. У тебя где-то фигурная скобка на одной строке, где-то на следующий, где-то написан private, где-то его нет, какие-то поля с большой буквы, какие-то с маленькой, где-то есть пробелы вокруг =, где-то нет... некрасивый код.


Сообщение отредактировал drcrack - Воскресенье, 18 Февраля 2018, 15:08
BassPiraT92Дата: Воскресенье, 18 Февраля 2018, 15:14 | Сообщение # 7
участник
Сейчас нет на сайте
drcrack, сорян, учту т.к. учусь ещё :) спасибо за совет кстати! B)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт движения и прыжка. (Движение работает, прыгает редко даже если на земле.)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг