Физика движений как в Warface

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Физика движений как в Warface

Сообщение Zumhad 21 фев 2019, 13:59

Можно долго говорить что Warface плохая игра но все же в ней хорошее перемещение. Коротко. Мне нужен полный код примерного перемещения. Допустим когда персонаж бежит вперед и поворачивается налево и нажимает на левую кнопку - он отпрыгивает налево. Очень нужно. Уже 3 дня не могу сделать. Кто шарит заранее спасибо :)
Zumhad
UNец
 
Сообщения: 9
Зарегистрирован: 21 фев 2019, 13:47

Re: Физика движений как в Warface

Сообщение Tolking 21 фев 2019, 14:02

И чего сделал за 3 для?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Физика движений как в Warface

Сообщение Zumhad 21 фев 2019, 14:08

Синтаксис:
Используется csharp
using System.Collections;
using UnityEngine;

[RequireComponent(typeof(CharacterController))]
[AddComponentMenu("Control Script/FPS Input")]

public class KeyControler : MonoBehaviour
{
    public float speed = 10;
    public float gravity = -10f;

    Vector3 movement;
    Vector3 _gravity;

    private CharacterController ch_contrl;

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

    void Update()
    {
        Move();
        Sprint();
        Jump();
    }

    Vector3 lastMove;

    private void Move()
    {
            movement.x = Input.GetAxis("Horizontal") * speed;
            movement.z = Input.GetAxis("Vertical") * speed;
            movement = Vector3.ClampMagnitude(movement, speed);

            movement.y = gravity;
            movement *= Time.deltaTime;
            movement = transform.TransformDirection(movement);

            ch_contrl.Move(movement);  
    }

    private void Jump()
    {
        if (!ch_contrl.isGrounded) gravity -= 1f;
        else gravity = -10f;

        if (Input.GetKeyDown(KeyCode.Space) && ch_contrl.isGrounded)
        {
            gravity = 20f;
        }
    }

    private void Sprint()
    {
        if(ch_contrl.isGrounded & (Input.GetKey(KeyCode.LeftShift) & Input.GetKey(KeyCode.W)))
        {
            if(speed != 13)
            {
                speed += 1;
            }
        }
        else
        {
            if(speed != 10)
            {
                speed -= 1;
            }
        }
    }
}
 
Zumhad
UNец
 
Сообщения: 9
Зарегистрирован: 21 фев 2019, 13:47

Re: Физика движений как в Warface

Сообщение Zumhad 21 фев 2019, 14:10

Я много эксперементировал и много раз все менял и удалял поэтому тут так мало
Zumhad
UNец
 
Сообщения: 9
Зарегистрирован: 21 фев 2019, 13:47

Re: Физика движений как в Warface

Сообщение Zumhad 21 фев 2019, 14:11

Помоги ходя бы немного
Дальше сам как нибудь
Вся проблема в гравитации
Zumhad
UNец
 
Сообщения: 9
Зарегистрирован: 21 фев 2019, 13:47

Re: Физика движений как в Warface

Сообщение Jarico 21 фев 2019, 14:46

Zumhad писал(а):Вся проблема в гравитации


Ну что делает сила притяжения с твоим телом? Она постоянно притягивает тебя к себе так и в Unity, применяй константу скорости свободного падения const float gravity = 9.81f

Синтаксис:
Используется csharp
public Vector3 moveDir = Vector3.zero;

void FixedUpdate()
{
if(controller.isGrounded == false){
moveDir.y -= 9.81f;
}

{
controller.Move(moveDir);
}
}
 
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Физика движений как в Warface

Сообщение Tolking 21 фев 2019, 14:59

Ну с гравитацией у тебя проблема из-за того что с физикой проблема... При прыжке гравитация не меняет направление и, главное, она не скорость она ускорение...
Для начала нужно rtfm внимательно! https://docs.unity3d.com/ScriptReference/CharacterController.Move.html
deltaTime не просто там так напиханы в них глубокий физический смысл!

P.S. CharacterController не физический объект. Все нужно делать в апдейте учитывая прошедшее время.
P.P.S. Не знаю что хорошего в перемещении Варфейс, но подозреваю что все хорошее в ней может быть в анимации...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Физика движений как в Warface

Сообщение Zumhad 21 фев 2019, 15:48

Это я все я понимаю. Мне нужно допустим если я просто прыгаю и потом пытаюсь двигаться то я не мог этого сделать. А когда разбегусь и потом прыгну то смогу. Также я уже говорил что не получается сделать такую фишку - что когда я при разбеге поворачиваюсь налево допустим и нажимаю "A" и прыгаю то я отскочу намного сильнее чем просто без этих манипуляций. Через условия я уже пытался делать. Все смешивается. Получается фигня.
Zumhad
UNец
 
Сообщения: 9
Зарегистрирован: 21 фев 2019, 13:47

Re: Физика движений как в Warface

Сообщение Jarico 21 фев 2019, 16:59

Tolking писал(а):Ну с гравитацией у тебя проблема из-за того что с физикой проблема... При прыжке гравитация не меняет направление и, главное, она не скорость она ускорение...
Для начала нужно rtfm внимательно! https://docs.unity3d.com/ScriptReference/CharacterController.Move.html
deltaTime не просто там так напиханы в них глубокий физический смысл!

P.S. CharacterController не физический объект. Все нужно делать в апдейте учитывая прошедшее время.
P.P.S. Не знаю что хорошего в перемещении Варфейс, но подозреваю что все хорошее в ней может быть в анимации...


Или в кривой
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28