我正在做一个个人项目,我想在飞机上可视化飞机。我创建了一个.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]));
}
}
}
预期结果将是一个随时间推移朝不同方向移动的多维数据集。会喜欢一些提示,在此先谢谢您!
答案 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);
}
}
}
我还使它对坐标做了一点循环,并添加了speed属性。
我不太确定是否将csv文件作为公共TextAsset添加到游戏对象中是否是正确的方法,也许将文件 path 用于csv文件更有意义而是从代码中获取文件数据。
希望这会有所帮助,如果您还有其他问题,请告诉我。