Godot 3.0 Изменить окно столкновения во время выполнения - PullRequest
0 голосов
/ 06 июня 2018

В моем (первом) проекте на Godot, простом платформере, я хотел сделать слайд персонажа.Когда персонаж скользит, он должен быть только на один тайл, чтобы он мог проходить через меньшие промежутки.Поскольку я не знал лучшего решения, я изменил хитбоксы следующим образом:

(также я использовал отдельный хитбокс для ходьбы)

enum Shape {
    NORMAL,
    WALK,
    SLIDE
}

func set_shape(name):

    $NormalCShape.disabled = true
    $WalkCShape.disabled = true
    $SlideCShape.disabled = true

    if name == Shape.NORMAL:
         $NormalCShape.disabled = false
    elif name == Shape.WALK: 

        $WalkCShape.disabled = false

    elif name == Shape.SLIDE:

        $SlideCShape.disabled = false

Это не очень хорошее решение,Недавно мой код стал более сложным, потому что я добавил разные гравитационные направления, что привело бы к 12 различным хитбоксам.Я не нашел лучшего решения для этого, но я чувствую, что оно должно быть.

Так может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 29 июля 2019

В конечном счете, ваше решение будет самым простым, так как если вы измените геометрию хитбокса (что можно сделать, отредактировав CollisionShape2D.shape.rect_extents, если вы используете прямоугольный хитбокс), вам все равно придется хранить все 12 измененныхгеометрии, написав их RectExtents в коде, вместо того, чтобы изменять их в редакторе.

Более простое потенциальное решение: предполагая, что ваш персонаж использует KinematicBody2D, просто измените ваш код так, чтобы гравитация применяла к ним силу в любом направлении вниз,а затем поверните весь символ.Таким образом, вам нужно только 3 разных CollisionShapes.

...