GameObject跟随另一个GameObject平滑Java
所以在我的游戏中,我有一个玩家,他手里拿着一个灯泡。(灯泡是像那个玩家一样的自己的游戏对象)现在我将灯泡的位置设置为玩家的位置,这样灯泡就放在了玩家的手里。我想做的是,当球员移动时,灯泡跟随球员,有一点延迟GameObject跟随另一个GameObject平滑Java,java,Java,所以在我的游戏中,我有一个玩家,他手里拿着一个灯泡。(灯泡是像那个玩家一样的自己的游戏对象)现在我将灯泡的位置设置为玩家的位置,这样灯泡就放在了玩家的手里。我想做的是,当球员移动时,灯泡跟随球员,有一点延迟 public void tick() { bulbX = playerX + 20; bulbY = playerY - 3; } 有什么想法吗 非常感谢,Maxi将其设置为使灯泡始终朝播放器移动 public void tick() { bulbX += (pla
public void tick() {
bulbX = playerX + 20;
bulbY = playerY - 3;
}
有什么想法吗
非常感谢,Maxi将其设置为使灯泡始终朝播放器移动
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;
}
这样,在足够高的帧速率下,灯泡将以指数的方式接近播放器。@MaxiKeller查看我的最新答案,我认为它将更适用于you@MaxiKellerThijsStee的回答提供了我上述评论的一个例子。球的位置向量是(球BX,球比),球员是(球员X,球员)。在
tick()
的第一个示例中,通过减去两个向量player-bull
找到灯泡到播放器的向量。答案使用了一个奇怪的情况(但考虑到情况合理)作为速度,但在第二个刻度示例(tick(float)
)中,因子本质上是速度*单位向量
,然后乘以时间。所以大部分元素都在这里。你的另一个Q缺少的部分是“得到一个单位向量,乘以速度”。当你删除它时,我正在回答你关于朝光标射击子弹的问题。我想这也会有帮助,所以这不是离题。首先,认识到(x,y)坐标基本上是一个向量。然后,谷歌搜索以下内容并阅读:“减去向量”(如果减去它们的位置,将提供一个从一个对象到另一个对象的向量,这将得到“平移向量”),“如何计算向量大小”,“单位向量”,然后将平移向量除以大小得到单位向量,乘以你想要的速度得到(x,y)速度,乘以滴答时间。你是最好的。非常感谢。我真的很感谢你的支持。我想出了一个办法@亚伦