Начальная точка TrailRenderer при нажатии - PullRequest
0 голосов
/ 04 мая 2020

Я следовал руководству Brackeys по созданию реплики Fruit Ninja ( youtube ). Однако при создании блейда поведение, которое я получил, было не совсем таким.

Ожидаемое поведение

image

Actual behaviour

image

The difference is that in the Actual behaviour, the trail starts where it stopped the last time it was shown. The code responsible for this is exactly the same as the video:

public class BladeController : MonoBehaviour
{
    bool isCutting = false;
    public GameObject bladeTrailPrefab;
    GameObject currentBlade;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) {
            StartCutting();
        } else if (Input.GetMouseButtonUp(0)) {
            StopCutting();
        }

        if (isCutting) {
            UpdateCut();
        }
    }

    void UpdateCut()
    {
        GetComponent<Rigidbody2D>().position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }

    void StartCutting()
    {
        isCutting = true;
        this.currentBlade = Instantiate(bladeTrailPrefab, transform);
    }

    void StopCutting()
    {
        isCutting = false;
        Destroy(currentBlade, 1f);
    }
}

После понимания кода я мне показалось, что проблема заключалась в том, что я создал экземпляр BladeTrail перед тем, как переместить Blade в новую позицию, но попытался переместить метод Instantiate в UpdateCut после изменения позиции и только если this.currentBlade == null.

I ' Мы много об этом искали и даже нашли других сообщений с той же проблемой, но без ответа.

1 Ответ

0 голосов
/ 04 мая 2020

Это выглядит так, что Instantiate использует последнюю позицию мыши для создания префаба.

Может использовать:

Instantiate(bladeTrailPrefab, Camera.main.ScreenToWorldPoint(Input.mousePosition), Quaternion.identity)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...