Перемещение игрыОбъект от А до Б - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь анимировать / преобразовать игровой объект movingObject из его позиции появления в destination.Я полагаю, что проблема заключается в реализации функции IncrementPosition.

Вместо перемещения одного куба из A в B. Сценарий порождает несколько кубов, пока не доберется до B. Можете ли вы увидеть, где я 'я иду не так?

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class onClickSpawnMove : MonoBehaviour
{
    public float speed;
    public GameObject randomSpawn;

    private GameObject movingObject;
    private Vector3 destination;

    void Start()
    {
        Spawn();
    }

    void Update()
    {
        SetDestination(movingObject.transform.position);
        if (destination != movingObject.transform.position) {
            IncrementPosition();
        }
    }

    void IncrementPosition()
    {

        float delta = speed * Time.deltaTime;
        Vector3 currentPosition = movingObject.transform.position;
        Vector3 nextPosition = Vector3.MoveTowards(currentPosition, destination, delta);

        movingObject.transform.position = nextPosition;
    }

    void Spawn() {
        Vector3 spawnPosition = new Vector3(10, 0, 0);
        movingObject = Instantiate(randomSpawn, spawnPosition, Quaternion.identity);
    }

    public void SetDestination(Vector3 value)
    {
        destination = new Vector3(20, 0, 0);
    }
}

1 Ответ

0 голосов
/ 22 января 2019

Есть несколько способов вызвать метод Spawn / Start случайно:

  1. gameObject.AddComponent<onClickSpawnMove>(); метод Start будет вызван снова.

  2. Instantiate префаб, к которому уже прикреплен скрипт onClickSpawnMove.

  3. gameObject.SendMessage("Start"); возможно, но редко встречается.

Вы можете добавитьжурнал или точку останова, чтобы проверить, когда вызывается метод Spawn / Start.

Печать хеш-кода поможет вам узнать различные onClickSpawnMove экземпляры.

И вы можете нажать на сообщение вконсоль, чтобы узнать, какой GameObject.

void Start()
{
    Spawn();
    Debug.Log("Start " + this.GetHashCode(), this);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...