Godot: KinematicBody2D рдЪрд╛рд▓ Collision Transform рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рдХреЗрд╡рд▓ _fixed_process рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдорд╛рд░реНрдЪ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: godotengine/godot

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ - рдЧреЛрдбреЛрдЯ рд╕рдВрд╕реНрдХрд░рдг:
рд╡рд┐рдВрдбреЛрдЬ 10 x64 - рдЧреЛрдбреЛрдЯ 2.1.2.рд╕реНрдерд┐рд░.рдЖрдзрд┐рдХрд╛рд░рд┐рдХ

рдореБрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг:
KinematicBody2D рдХреЛ рдЪрд╛рд▓ () рдХреЗ рд╕рд╛рде рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, Collider рд░реВрдкрд╛рдВрддрд░рдг рдЕрджреНрдпрддрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рд▓ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЛрд▓рд╛рдЗрдбрд░ рд╕реНрдерд┐рддрд┐/рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдЧреАред

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг:

  • рдЖрдпрддрд╛рдХрд╛рд░ CollisionShape2D рдХреЗ рд╕рд╛рде 1 KinematicBody2D (A) рдФрд░ 1 StaticBody2D (B) рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рд╕реЗрдЯ рдХрд░реЗрдВ
  • A рдХреЛ B рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдХреБрдЫ рдЬрдЧрд╣ <100px рд╣реЛ рд╕рдХрддреА рд╣реИ) рдФрд░ A рдФрд░ B CollisionShapes 64px x 64px рд╣реИрдВ
  • рдХреЛрдб рдХреЗ рд╕рд╛рде A рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:
func _ready():
    set_fixed_process(true)

func _fixed_process(delta):
    move(Vector2(0, 100))
    move(Vector2(100, 0))
    set_fixed_process(false)

A рдХреЗрд╡рд▓ рдиреАрдЪреЗ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджрд╛рдИрдВ рдУрд░ рдирд╣реАрдВред
рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА, A, B рдХреЗ рдиреАрдЪреЗ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдмреА рдХреЗ рдиреАрдЪреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрд▓-рдЖрдХрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдкрд╣рд▓реЗ рдиреАрдЪреЗ, рдлрд┐рд░ рджрд╛рдПрдВ)ред
рдореВрд╡ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЛ рдирдИ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджрд╛рдПрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреА рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рд╣рдо рдХреЗрд╡рд▓ рджрд╛рдПрдВ рдЪрд▓реЗ рдЧрдПред

рд╕рдорд╛рдзрд╛рди:
_fixed_process рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓реЗрдВ:

func _fixed_process(delta):
    move(Vector2(0, 100))
    var st = get_shape_transform(0) # get current shape transform, assuming we only have 1 shape
    st.o += get_travel() # add move translation to shape transform
    set_shape_transform(0, st) # update shape transform
    move(Vector2(100, 0))
        # you should reset the shape transform to its original state befor returing
    set_fixed_process(false)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ # 7951 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @RandomShaper рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ : рд╕реНрдорд╛рдЗрд▓реА:

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ # 7951 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @RandomShaper рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ : рд╕реНрдорд╛рдЗрд▓реА:

рд╣рд╛рдБ, рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред

рдореБрдЭреЗ рд╡рд╣ рдпрд╛рдж рдЖ рдЧрдпрд╛ред
рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ducdetronquito picture ducdetronquito  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Spooner picture Spooner  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

n-pigeon picture n-pigeon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RayKoopa picture RayKoopa  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mefihl picture mefihl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ