如何使用带有xyz坐标(RD_NEW)的.csv文件并在Unity中实现?

时间:2019-06-18 12:59:54

标签: c# csv unity3d coordinates

我正在做一个个人项目,我想在飞机上可视化飞机。我创建了一个.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 :(得分:0)

  • 要在点之间移动平面,可以使用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添加到游戏对象中是否是正确的方法,也许将文件 path 用于csv文件更有意义而是从代码中获取文件数据。

希望这会有所帮助,如果您还有其他问题,请告诉我。