所以在我的遊戲我有一個播放器,它擁有一個燈泡在他的手裏。(燈泡是自己的遊戲物體像球員)現在我的燈泡位置設置爲播放位置,燈泡落在玩家手中。我想要做的是,當玩家移動燈泡跟隨玩家,帶着幾分延遲。遊戲對象以下另一個遊戲物體平滑的Java
public void tick() {
bulbX = playerX + 20;
bulbY = playerY - 3;
}
任何想法??
非常感謝,馬克西
所以在我的遊戲我有一個播放器,它擁有一個燈泡在他的手裏。(燈泡是自己的遊戲物體像球員)現在我的燈泡位置設置爲播放位置,燈泡落在玩家手中。我想要做的是,當玩家移動燈泡跟隨玩家,帶着幾分延遲。遊戲對象以下另一個遊戲物體平滑的Java
public void tick() {
bulbX = playerX + 20;
bulbY = playerY - 3;
}
任何想法??
非常感謝,馬克西
設置它,使燈泡總是朝着玩家移動。
public void tick() {
bulbX += (playerX - bulbX)/2;
bulbY += (playerY - bulbY)/2;
}
這樣,如果距離更遠,燈泡會更快地向玩家移動。您可能需要調整1/2參數。
我還喜歡時差添加到我的代碼,因此本場比賽將不會如幀率放緩。
long time1 = System.currentTimeMillis();
while(running){
long time2 = System.currentTimeMillis();
float timeDiff = (time2-time1)/1000f;
time1 = time2;
tick(timeDiff);
}
和刻度方法:
public void tick(float timeDiff){
float factor = 2;
bulbX += (playerX - bulbX)*factor*timeDiff;
bulbY += (playerY - bulbY)*factor*timeDiff;
}
這種方式,具有足夠高的幀率,燈泡就會成倍的形式給出的球員。
它的作品。謝謝soooooo了。 <3 –
@MaxiKeller看到我更新的答案,我認爲它會對你更好 –
@MaxiKeller ThijsStee的回答提供了我上面評論的一個例子。燈泡的位置矢量(bulbX,bulbY),玩家的是(PlayerX的,playerY)。在'tick()'的第一個例子中,從燈泡到玩家的矢量是通過減去兩個矢量'player-bulb'找到的。答案在速度方面使用了一個奇怪的情況(但考慮到情況是合理的),但在第二個例子中('tick(float)'),'factor'基本上是'velocity * unit_vector',然後它乘以時間。所以大部分元素都在這裏。你的其他Q缺失的部分是「得到一個單位矢量,乘以速度」 – Aaron
我回答關於拍攝子彈朝光標,當你刪除了你的問題。在我看來,這也將有所幫助,所以這不是問題。首先,認識到(x,y)座標基本上是一個向量。然後,谷歌了以下,並閱讀:「減去矢量」(這將提供一個矢量從一個對象到另一個,如果你減去他們的位置,這將得到「平移矢量」),「如何計算矢量幅度」,「單位載體」,然後通過幅度除以平移矢量得到單位矢量,乘以你所需的速度得到(X,Y)的速度,由蜱時間相乘。 – Aaron
你是最棒的。非常感謝你。我非常感謝你的支持。我想出了一個辦法。 @Aaron –