Как использовать файл .csv с координатами XYZ (RD_NEW) и реализовать в Unity? - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над личным проектом, в котором я хочу визуализировать самолеты над аэропортами. Я создал файл .csv, содержащий координаты одного самолета за определенный период времени. Я попытался написать код в Unity, в котором координаты связаны с кубом и перемещаются во времени. К сожалению, мой код не работает.

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

public class AirplanePlayer : MonoBehaviour
{
    public GameObject airplane;
    public TextAsset csvFile;

    // Update is called once per frame
    void Update() {
    }


    void readCSV()
    {
        string[] records = csvFile.text.Split('\n');
        for(int i = 0; i < records; i++)
        {airplane.transform.position(float.Parse(fields[2]),float.Parse(fields[3]),  float.Parse(fields[4]));
        }
    }
}

Ожидаемым результатом будет куб, который со временем движется в разных направлениях. Буду признателен за несколько советов, заранее спасибо!

1 Ответ

0 голосов
/ 19 июня 2019
  • Для перемещения плоскости между точками вы можете использовать метод Vector3.MoveTowards .Вот очень простая реализация того, что, как я понимаю, вы пытаетесь выполнить:

    public class PlaneController : MonoBehaviour
    {
        public TextAsset coordinates;
        public int moveSpeed;
    
        string[] coordinatesArray;
        int currentPointIndex = 0;
        Vector3 destinationVector;
    
        void Start()
        {
            coordinatesArray = coordinates.text.Split(new char[] { '\n' });
        }
    
        void Update()
        {
            if (destinationVector == null || transform.position == destinationVector)
            {
                currentPointIndex = currentPointIndex < coordinatesArray.Length - 1 ? currentPointIndex + 1 : 1;
                if(!string.IsNullOrWhiteSpace(coordinatesArray[currentPointIndex]))
                {
                    string[] xyz = coordinatesArray[currentPointIndex].Split(new char[] { ',' });
                    destinationVector = new Vector3(float.Parse(xyz[0]), float.Parse(xyz[1]), float.Parse(xyz[1]));
                }
            }
            else
            {
                transform.position = Vector3.MoveTowards(transform.localPosition, destinationVector, Time.deltaTime * moveSpeed);
            }
        }
    }
    

    enter image description here

  • Я также сделал этосделайте небольшой цикл с координатами и добавьте свойство speed.

  • Я не совсем уверен, является ли правильный подход к добавлению файла CSV в качестве общедоступного TextAsset для игрового объекта, возможноимеет смысл использовать вместо этого файл путь для файла CSV и получить данные файла из кода.

Надеюсь, это поможет, дайте мне знать, если у вас есть какие-либобольше вопросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...