Godot: ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ KinematicBody2D Π½Π΅ обновляСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ столкновСния (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² _fixed_process выполняСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСстированиС)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 16 ΠΌΠ°Ρ€. 2017  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: godotengine/godot

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма ΠΈΠ»ΠΈ устройство - вСрсия Godot:
Windows 10 x64 - Godot 2.1.2.ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ.ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ

ОписаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:
ПослС пСрСмСщСния KinematicBody2D с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ move() прСобразования ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π° Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ.
КаТдоС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ/трансформациСй ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Π°.

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ:

  • НастройтС сцСну с 1 KinematicBody2D (A) ΠΈ 1 StaticBody2D (B) с ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ CollisionShape2D
  • A помСщаСтся слСва ΠΎΡ‚ B (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пространство <100 пиксСлСй), Π° A ΠΈ B CollisionShapes ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ 64 x 64 пиксСля.
  • Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ скрипт Π² A с ΠΊΠΎΠ΄ΠΎΠΌ:
func _ready():
    set_fixed_process(true)

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

А двиТСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΠΈΠ·, Π½ΠΎ Π½Π΅ Π²ΠΏΡ€Π°Π²ΠΎ.
Π”Π°ΠΆΠ΅ Ссли послС пСрСмСщСния Π²Π½ΠΈΠ· А помСстится ΠΏΠΎΠ΄ Π’.
Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ Π±ΡƒΠΊΠ²ΠΎΠΉ B ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π±ΡƒΠΊΠ²Ρ‹ L (сначала Π²Π½ΠΈΠ·, Π·Π°Ρ‚Π΅ΠΌ Π²ΠΏΡ€Π°Π²ΠΎ).
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½Π΅ обновляСт ΠΊΠΎΠ»Π»Π°ΠΉΠ΄Π΅Ρ€Ρ‹ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, поэтому ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΏΡ€Π°Π²ΠΎ ΠΎΠ½ каТСтся Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ 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 ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» :smiley:

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ # 7951, Π½ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ @RandomShaper ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» :smiley:

Π”Π°, это Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π― пропустил это.
Бпасибо.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ