рддреАрди рдЖрдпрд╛рдореА рдЧрддрд┐рд╢реАрд▓ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдР, рдкрд╛рдердлрд╛рдЗрди, рдкрд╛рдердлреЙрд▓ (рднрд╛рдЧ 1)

рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ , рд╕рд╛рде рд╣реА рдЗрд╕ рддрдереНрдп рдХреЛ рднреА рдмрддрд╛рдпрд╛ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рдЙрдиреНрдирдд AI рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ), рдореИрдВ рдорд╣рд▓ рдХреЗ рд░рдХреНрд╖рдХреЛрдВ рдФрд░ рдЙрд╕ рдкрд░ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдпрд╣ рдорд╣рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬреАрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рд╕рдВрдпреЛрдЧ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдмрд╛рд╣рд░ рд╢реБрд░реВ рдХрд░реЗрдВ - рдкрд╛рдердлреЙрд▓ рдХреЗ рд╕рд╛рде, рдЕрд░реНрдерд╛рддреНред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдП рдЧрдП рдкрде рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд░рд╛рдХреНрд╖рд╕реЛрдВ / рдПрдирдкреАрд╕реА рдХреЗ рдЖрдВрджреЛрд▓рди рд╕реЗред рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрде рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ ... рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЪрд▓реЗрдВред

рд╕реНрдерд┐рддрд┐


рд╣рдо рддреАрди рдЖрдпрд╛рдореА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреБрдЫ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреВрдм рдереНрд░реА-рдбрд╛рдпрдореЗрдВрд╢рдирд▓ рджреБрдирд┐рдпрд╛ (рдорд┐рдиреАрдХреНрд░рд╛рдлреНрдЯ) рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рдЪрд┐рдХрдиреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░реЗред Y рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдКрдкрд░ рдХреА рдУрд░ рд╣реИ, рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╕реАрдзреЗ рд▓рд╛рд▓ рдмрд┐рдВрджреБ рд╕реЗ рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рдПрдХ рдиреАрд▓реА рдЖрдХреГрддрд┐ рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ рдкреАрд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рди рд▓рд╛рдПред
рдЫрд╡рд┐
рд╡рд╕реНрддреБ рд╕реНрд╡рдпрдВ "рдХреЛрдиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░" рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реА рдЪреАрдЬ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрдмрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдЫрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рдзрд╛ рдкрд░ рдЪрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреВрджрддреЗ рд╣реИрдВ; рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдзрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рджреЗрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕ рдкрде рдкрд░ рд▓реЗрдЯ рдЬрд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдХреЛ рдХреВрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд╕реНрддреБ


рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЖрдЗрдП рдЗрд╕реЗ рдЗрдХрд╛рдИ рдХрд╣рддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ (рдпрджрд┐ рдХреЛрдИ рдЗрдЪреНрдЫреБрдХ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреА рдЫреЛрдЯреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рджреВрдВрдЧрд╛ (рдЪрд▓реЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рддрд░реНрдХ рдЧрддрд┐ рд╡реЗрдХреНрдЯрд░ рд╣реИрдВ (dx, dy, dz)):
рдПрдВрдЯрд┐рдЯреА рдореЗрдВ рдХреБрдЫ рдФрд░ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдЖрдВрджреЛрд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ:

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдореЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ ред рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдореЛрдбрд╝рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЗрд╕ рд╕рдордп рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред рдореИрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдореЛрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп:
 float secDiff = (System.currentTimeMillis() - lastTick) / 1000.0F; //    ,      if(secDiff > 0.5F) //   ,   ,       //  ,       ,       secDiff = 0.5F; lastTick = System.currentTimeMillis(); //    moveForward(speed * secDiff); if(stuckHorizontally) { //    if(onGround) { //     if(lastJumping + 500 < System.currentTimeMillis()) { jump(); //    lastJumping = System.currentTimeMillis(); //   .      :) } } } applyForces(secDiff); //  motX, motY  motZ   

рджреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИрдВ MoveForward (рдлреНрд▓реЛрдЯ) рдФрд░ applyForces (рдлреНрд▓реЛрдЯ)ред рдкрд╣рд▓рд╛ рдПрдХ рдЖрдВрджреЛрд▓рди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рд╡рд╕реНрддреБ рдкрд░ рд▓рд╛рдЧреВ рдмрд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
 protected void moveForward(float distance) { /* *        . *   тАФ distance тАФ ,       */ moveSpeedX = (float) -Math.sin(this.yaw / 180.0F * (float) Math.PI) * distance; moveSpeedZ = (float) Math.cos(this.yaw / 180.0F * (float) Math.PI) * distance; //   тАФ  Java,  -   Java,  -0.0F    ... if(moveSpeedX == -0.0F) moveSpeedX = 0.0F; if(moveSpeedZ == -0.0F) moveSpeedZ = 0.0F; //     ,    ... if(moveSpeedX != 0.0F || moveSpeedZ != 0.0F) this.move(moveSpeedX, 0.0D, moveSpeedZ); // ,   ,     .      ,   ,      Minecraft } 
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрджрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдКрдкрд░ рджреА рдЧрдИ рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдЯреИрд╣реЛрд░рд╣реЙрдиреНрдЧрд▓реА рдлреНрд▓реИрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ onGround рдлреНрд▓реИрдЧ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбрд╛рдИ 0 рд╣реИ, рддреЛ applyForces рдЗрд╕ рдлреНрд▓реИрдЧ рд╕реЗ рдирд┐рдкрдЯреЗрдЧрд╛ ред рдпрджрд┐ рдЕрдЯрд╛рд░реА рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕рдЪ рдФрд░ рдСрдирдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рднреА рд╕реЗрдЯ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреВрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреВрдж рд╕рдорд╛рд░реЛрд╣ рдпрд╣ рдХрд░реЗрдЧрд╛:
 protected void jump() { this.motY = jumpSpeed; } 
рдмрд╕ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдЧрддрд┐ рджреЗрдВ ... рдареАрдХ рд╣реИ, рдФрд░ рдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдпрд╣рд╛рдВ рдЖрдк рд░рдЪрдирд╛рддреНрдордХрддрд╛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рджреБрдирд┐рдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╡рд╛рддрд╛рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБ рд╕реНрдерд┐рдд рд╣реИ, рдШрд░реНрд╖рдг рдФрд░ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдмрдиреНрд╕ред рдореИрдВ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
 private void applyForces(float secDiff) { //      ,        -. if(Math.abs(this.motX) < 0.1D) this.motX = 0.0F; if(Math.abs(this.motY) < 0.1D) this.motY = 0.0F; if(Math.abs(this.motZ) < 0.1D) this.motZ = 0.0F; /** *    .    , *     ,    *  .    . */ float friction = Constants.ENTITY_FLYING_FRICTION; //   0.98.   тАФ   . 0.0 тАФ  . if(this.motY * secDiff != 0.0D || this.motX * secDiff != 0.0D || this.motZ * secDiff != 0.0D) //  0,    ,  this.move(this.motX * secDiff, this.motY * secDiff, this.motZ * secDiff); this.motY -= Constants.GRAVITATION * secDiff; //       /* *   */ this.motX -= this.motX * friction * secDiff; this.motY -= this.motY * friction * secDiff; this.motZ -= this.motZ * friction * secDiff; } 
рдЕрд╕рд▓ рдореЗрдВ, рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред (рдШрд░реНрд╖рдг рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ ... рдореЗрд░рд╛ рдлрд╝рдВрдХреНрд╢рди 1 рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗрдХрдВрдб рдпрд╛ 1 рд╕реЗ рдЕрдзрд┐рдХ рдШрд░реНрд╖рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!)

MoveForward рдФрд░ applyForces рдореЗрдВ рджреЛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд╛рд░ рдореВрд╡ рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд╕реАрдзреЗ callForces рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдореЗрдВ MoveX рдФрд░ MoveZ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рддрдм рдЯрдХрд░рд╛рдХрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рд▓рд┐рдП рддрдп рдХрд░реЗрдВ рдХрд┐ рдХрд╣рд╛рдВ рд╕рдВрддреБрд▓рди рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛


рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдХрд╛ рдирдореВрдирд╛ рдХреЛрдб рдЬреЛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ, рдХреЗрд╡рд▓ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдХреЛрдб рдореЗрдВ рд╢реЗрд╖ рд╣реИрдВред
 public class Entity { public float speed = 3.0F; public float jumpSpeed = 6.0F; private long lastJumping = 0; private boolean stuckHorizontally = false; public boolean onGround = true; protected float moveSpeedX; protected float moveSpeedZ; public float motX; public float motY; public float motZ; public void tick() { float secDiff = (System.currentTimeMillis() - lastTick) / 1000.0F; //    ,      if(secDiff > 0.5F) //   ,   ,       //  ,       ,       secDiff = 0.5F; lastTick = System.currentTimeMillis(); //    moveForward(speed * secDiff); if(stuckHorizontally) { //    if(onGround) { //     if(lastJumping + 500 < System.currentTimeMillis()) { jump(); //    lastJumping = System.currentTimeMillis(); //   .      :) } } } applyForces(secDiff); //  motX, motY  motZ } private void moveForward(float distance) { /* *        . *   тАФ distance тАФ ,       */ moveSpeedX = (float) -Math.sin(this.yaw / 180.0F * (float) Math.PI) * distance; moveSpeedZ = (float) Math.cos(this.yaw / 180.0F * (float) Math.PI) * distance; //   тАФ  Java,  -   Java,  -0.0F    ... if(moveSpeedX == -0.0F) moveSpeedX = 0.0F; if(moveSpeedZ == -0.0F) moveSpeedZ = 0.0F; //     ,    ... if(moveSpeedX != 0.0F || moveSpeedZ != 0.0F) this.move(moveSpeedX, 0.0D, moveSpeedZ); // ,   ,     .      ,   ,      Minecraft } private void applyForces(float secDiff) { //      ,        -. if(Math.abs(this.motX) < 0.1D) this.motX = 0.0F; if(Math.abs(this.motY) < 0.1D) this.motY = 0.0F; if(Math.abs(this.motZ) < 0.1D) this.motZ = 0.0F; /** *    .    , *     ,    *  .    . */ float friction = Constants.ENTITY_FLYING_FRICTION; //   0.98.   тАФ   . 0.0 тАФ  . if(this.motY * secDiff != 0.0D || this.motX * secDiff != 0.0D || this.motZ * secDiff != 0.0D) //  0,    ,  this.move(this.motX * secDiff, this.motY * secDiff, this.motZ * secDiff); this.motY -= Constants.GRAVITATION * secDiff; //       /* *   */ this.motX -= this.motX * friction * secDiff; this.motY -= this.motY * friction * secDiff; this.motZ -= this.motZ * friction * secDiff; } public abstract void move(float dx, float dy, float dz); } 


рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред


рддрд╛рдХрд┐ рдпрд╣ рд╕рдм рдЕрд▓рдЧ рди рд╣реЛ рдЬрд╛рдП, рдЖрдкрдХреЛ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рди рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ рдХреЛ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗ, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рддрдп рдХрд░реЗ рдХрд┐ рд╡рд╕реНрддреБ рдХрдм рд╕реНрдерд┐рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрдм рдЖрдЧреЗ рдмрдврд╝рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рддрд╛рдХрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд▓реЗрдЦ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рдерд╛ ...

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдЕрдм рдЬреЛ рдХреБрдЫ рднреА рдореИрдВ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдореЙрдм рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╢рд╛рдпрдж рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА, рдлрд┐рд░ рдореИрдВ рд▓реЗрдЦ рдХреЛ рдкреВрд░рдХ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдиреАрдЪреЗ рд▓рд┐рдЦреЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛ, рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдпрд╛ рдЕрднреА рдпрд╛рдж рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдХреБрдЫ рднреА, рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/In165631/


All Articles