2011-03-21 93 views
0

給定一個可在給定的X,Y點向前,向後,向左和向右移動的對象。如何有效地使用給定的運動機制以最有效和最人性的方式將對象引導至X,Y點。用於將對象從點(X,Y)移動到點(X,Y)的C#路徑算法

該對象可用於實時移動,您可以告訴他們「startMoving」和「stopMoving」。雖然作爲一個額外的扭曲和我遇到的困難的部分是,對象的面對是永遠不知道的,只有它的當前位置是已知的,所以算法必須「檢測」方向。對象的位置以500-1秒的間隔在單獨的線程中更新。用於更新算法內的位置的「請求」可以在任何時候進行,但是它不是立即可用的,算法必須考慮到這一點。做像requestAndWaitForCoordUpdate()這樣的事情是完全可以接受的,但可能不需要。

下面是一些示例代碼:

public int[] currentCoords; 
public void movement() { 
    currentCoords[0] = 1005; // starting y coord 
    currentCoords[1] = 1007; // starting x coord 
    moveTo(1050, 1025); 
} 

public void moveTo(int x, int y) { 
    ... how? 
} 

public void threadUpdatingCoords() { 
    ... periodically check for source coord updates 
    ... between 200ms and 1000ms apart. 
} 
+0

我假設你的意思是別的,但是當你聲明你想從(x,y)移動到(x,y)時,你根本不會移動,因爲x = x和y = y。使用不同的變量會更清楚。 – invalidsyntax 2011-03-21 21:00:53

+0

提前15分鐘發佈的問題重複:http://stackoverflow.com/questions/5383833/c-pathing-algorithm-for-moving-a-object-from-pointx-y-to-pointx-y – 2011-03-21 22:01:59

回答

0

如果我理解正確的這個,你需要確定你的方向。

此外,您可以查詢您當前的位置。

您可以在去新位置之前存儲您的上一個座標嗎?

如果是這樣,請使用基本三角函數根據最後一個座標和新座標提取對象正在移動的角度。