![](/img/trans.png)
[英]c# get object's 2d plot points from 3d position, unit vectors, and dimensions
[英]C# - Move object from position to position in 3D dimension
我有一個簡單的C#控制台應用程序,用作Unity客戶端的TCP服務器。 我需要將x,y,z的起始位置轉換為結束位置,然后將Console.WriteLIne
為到達結束位置所需的所有x,y,z坐標。
這是我編寫的原型函數,用於以一定速度將對象從3d位置移動到另一個位置。
public class Position{
public float x;
public float y;
public float z;
}
public static Position MoveObject(Position position1, Position position2, float speed){
Position currentPosition = new Position();
currentPosition.x = position1.x + (position2.x - position1.x) * speed;
currentPosition.y = position1.y + (position2.y - position1.y) * speed;
currentPosition.z = position1.z + (position2.z - position1.z) * speed;
return currentPosition;
}
但是,這只是一個原型。 我需要while
循環之類的東西來遍歷對象的每個點,直到到達終點並顯示所有需要的坐標為止。
請記住,這是C#控制台應用程序,而不是Unity項目。
您將需要一個用於舊位置和所需位置的變量。 和一個計時器,刻度設置為大約1500。然后在while循環中,您只需在它們之間進行插值。
將您的班級更改為:
public class Position{
public float x;
public float y;
public float z;
public Position(float ix, float iy, float iz){
this.x=ix;
this.y = iy;
this.z=iz;
}
}
就像是 :
Position oldPosition;//you need to set this to start position somewhere(OnStart or prior method)
Position newPosition;//you need to set this to desired position somewhere(OnStart or prior method)
並且您將在Update()中使用它
if(currentPosition!=newPosition){
Position distance = new Position(oldPosition.x-newPosition.x,oldPosition.y-
newPosition.y,oldPosition.z-newPosition.z,);
Position currentPosition =new Position( distance.x/ (elapsedTime *
velocity),distance.y/ (Time.DeltaTime * velocity),distance.z/ (elapsedTime *
velocity));
}
因此從根本上講解更新方法,您需要距離/(時間*速度),這是偽代碼,但您應該可以從這里解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.