私はminecraftクローンをプログラムしようとしています。 現状では私はちょっとした世界があり、私も周りを歩くことができますが、今私はティックの方法で立ち往生しています。 whileループのmainメソッドでこのtickメソッドを呼び出しています。tick()メソッドを呼び出す方法
mainメソッド内のループ中:
boolean closeRequested = false;
while(!closeRequested){
mc.tick();
if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)){
closeRequested = true;
}
if(Display.isCloseRequested()){
closeRequested = true;
}
ティック法:
public void tick()
{
while (Keyboard.next()) {
if (Keyboard.getEventKeyState())
{
if (Keyboard.getEventKey() == 28) {
Minecraft.level.save();
}
if (Keyboard.getEventKey() == 2) {
this.paintTexture = 1;
}
if (Keyboard.getEventKey() == 3) {
this.paintTexture = 3;
}
if (Keyboard.getEventKey() == 4) {
this.paintTexture = 4;
}
if (Keyboard.getEventKey() == 5) {
this.paintTexture = 5;
}
if (Keyboard.getEventKey() == 7) {
this.paintTexture = 6;
}
}
}
Minecraft.level.tick();
Minecraft.particleEngine.tick();
Minecraft.player.tick(); //This is the movement
}
プレーヤーティック法:
public void tick()
{
this.xo = this.x;
this.yo = this.y;
this.zo = this.z;
float xa = 0.0F;
float ya = 0.0F;
if (Keyboard.isKeyDown(19)) {
resetPos();
}
if ((Keyboard.isKeyDown(200)) || (Keyboard.isKeyDown(17))) {
ya -= 1.0F;
}
if ((Keyboard.isKeyDown(208)) || (Keyboard.isKeyDown(31))) {
ya += 1.0F;
}
if ((Keyboard.isKeyDown(203)) || (Keyboard.isKeyDown(30))) {
xa -= 1.0F;
}
if ((Keyboard.isKeyDown(205)) || (Keyboard.isKeyDown(32))) {
xa += 1.0F;
}
if ((Keyboard.isKeyDown(57)) || (Keyboard.isKeyDown(219))) {
if (this.onGround) {
this.yd = 0.5F;
}
}
moveRelative(xa, ya, this.onGround ? 0.1F : 0.02F);
this.yd = ((float)(this.yd - 0.08D));
move(this.xd, this.yd, this.zd);
this.xd *= 0.91F;
this.yd *= 0.98F;
this.zd *= 0.91F;
if (this.onGround)
{
this.xd *= 0.7F;
this.zd *= 0.7F;
}
}
私は次のようにこのメソッドを呼び出しますこれはプレーヤーのmovソニックのようなものでも、それがプレーヤーの動きの速さに依存します。
私はこのコードの一部をミニクラフトアルファ版から入手しましたが、tick()
メソッドが呼び出されたポイントを見つけることができませんでした。
私はプレーヤーを一定の速度で動かしたいと思っています。
私はtimepassed、fps、またはティック(タイマーもオリジナルのミニクラフトコードからのものです)のようないくつかの変数を得ることができるタイマーを持っています。
これは、一時停止することなく実行しています。したがって、 'tick '呼び出しはCPU/OSが許可するのと同じくらい速く行われます。編集:あなたは任意の方法でスレッドの休止/休止をしていない場合は、コードを追加する必要はありません;) – AxelH
また、あなたのコードを構成することについては、 'はあなたの' main'メソッドの中にあります。 – CraigR8806