Как мне сценарий, чтобы показать эффект лихой машины? - PullRequest
0 голосов
/ 18 марта 2019

На самом деле, я разрабатываю бесконечную трехмерную автомобильную игру с видом на город, в которой я показываю несколько припаркованных машин, поэтому в основном я хочу, чтобы моя машина-игрок сталкивалась с припаркованной машиной. Я хочу, чтобы припаркованная машина вращалась.градусов и вернитесь к 0 градусам или исходному положению, как это было раньше.

Я просто хотел поднять припаркованную машину и снова должен коснуться земли до нормального состояния.Так что это покажет некоторый реалистичный эффект в игровом виде.

, так как я новичок в разработке единства, ваша помощь действительно может мне очень помочь.то, что я до сих пор пробовал, это:

void OnTriggerStay(Collider other)
{
    if (gameObject.CompareTag("ParkedCar"))
    {
        Debug.Log("ParkedCar");
        Quaternion from, to;
        float inputValue = 0;
        inputValue += Input.GetAxis("Vertical") * 10 * 1;
        from = transform.rotation;
        to = Quaternion.Euler(0, inputValue, 0);
        gameObject.transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime * 10f);
    }
}

, хотя я пробовал это

void OnTriggerStay(Collider other)
{
    if (gameObject.CompareTag("ParkedCar"))
    {
        gameObject.GetComponent<Rigidbody>().AddForce(transform.right * 100, ForceMode.Impulse);

    }
}

, пытаясь это сделать, но я не могу заставить мою припаркованную машину снова столкнуться на земле.Пожалуйста, помогите мне здесь.

1 Ответ

0 голосов
/ 18 марта 2019

Если я вас правильно понял, вы можете реализовать это с сопрограммой и OnTriggerEnter вместо OnTriggerStay следующим образом:

private bool isDashed = false;
float time = 1.0f;
void OnTriggerEnter(Collider other)
{
    //Assuming your to quaternion is correct
    if (gameObject.CompareTag("ParkedCar") && !isDashed)
    {
        Debug.Log("ParkedCar");
        Quaternion from, to;
        float inputValue = 0;
        inputValue += Input.GetAxis("Vertical") * 10 * 1;
        from = transform.rotation;
        to = Quaternion.Euler(0, inputValue, 0);
        StartCoroutine(DashingCar(from, to));
    }
}
IEnumerator DashingCar(Quaternion from, Quaternion to)
{ 
    float elapsedTime = 0.0f;       
    while (elapsedTime < time) 
    {
        gameObject.transform.rotation = Quaternion.Lerp(from, to, elapsedTime / time);
        elapsedTime += Time.deltaTime;
        yield return null;
    }
    isDashed = true;        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...