簡體   English   中英

C#-在3D維度中將對象從一個位置移動到另一個位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM