Сделайте байк стабильным в игре Unity 2D - PullRequest
2 голосов
/ 13 июля 2020

Я разрабатываю 2D-игру наподобие Hill climb Racing с велосипедом и для соединения колеса я использую Wheel Joint 2D , а для движения я использую

rb.AddTorque(rotation * rotationSpeed * Time.fixedDeltaTime);

enter image description here

It's working fine but after getting speed Bike is vibrating and Wheel leaves its original joint place.

I'm following this tutorial ссылка

1 Ответ

5 голосов
/ 13 июля 2020

У меня та же проблема с этим уроком, и я решил ее, используя вместо этого двигатель AddTorque И если ваше колесо покидает исходное место. Увеличьте его и убедитесь, что Колесный шарнир 2D находится точно по центру колеса, иначе он будет вибрировать на месте.

В этом уроке я решил это с помощью этого кода для BikeController.

using UnityEngine;
public class BikeController : MonoBehaviour
{
    public float speed = 1500;
    public float rotationSpeed = 10f;
    public WheelJoint2D backWheel;
    public WheelJoint2D frontWheel;
    public Rigidbody2D rb;
    private float movement = 0f;
    private float rotation = 0f;
    public Transform player;
    void Update()
    {
        movement = Input.GetAxisRaw("Horizontal") * speed; 
        rotation = Input.GetAxisRaw("Vertical");
        if (Input.touchCount > 0)
        {
            Touch tch = Input.GetTouch(0);
            if (tch.position.x > player.position.x)
            {
                movement = speed;
            }
            if (tch.position.x < player.position.x)
            {
                movement = -speed;
            }
        }
    }
    void FixedUpdate()
    {
        if (movement == 0f)
        {
            backWheel.useMotor = false;
            frontWheel.useMotor = false;
        }
        else
        {
            backWheel.useMotor = true;
            frontWheel.useMotor = true;
            JointMotor2D motor = new JointMotor2D { motorSpeed = movement, maxMotorTorque = 10000 };
            backWheel.motor = motor;
            frontWheel.motor = motor;
        }
        rb.AddTorque(rotation * rotationSpeed * Time.fixedDeltaTime);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...