0 votes

When I go do the left the sprite flips. But how can i flip the collisionshape2d?
Here'S s the code:

``
extends KinematicBody2D

const SPEED = 110
const UP = Vector2(0, -1)
var motion = Vector2()

func physicsprocess(delta) :
motion.y += 25

if Input.is_action_pressed("ui_right") :
    motion.x = SPEED
    $Sprite.flip_h = false
    $Sprite.play("Walk")

elif Input.is_action_pressed("ui_left") :
    motion.x = -SPEED
    $Sprite.flip_h = true
    $Sprite.play("Walk")

else :
    $Sprite.play("Idle")
    motion.x = 0
if is_on_floor() :
    if Input.is_action_just_pressed("ui_up") :
        motion.y = -550
else :
    $Sprite.play("Idle")

motion = move_and_slide(motion, UP)``

Here's a picture:
https://imgur.com/a/cvX0to8

asked Jun 21 in Engine by Schweini (100 points)
reshown Jun 21 by Schweini

Use Vector2.UP. No need for const UP = Vector2(0, -1).

1 Answer

0 votes

Instead of flipping the sprite, can you just flip the entire node?

if Input.is_action_pressed("ui_right") :
    motion.x = SPEED
    self.scale.y = abs(self.scale.y)
    $Sprite.play("Walk")

elif Input.is_action_pressed("ui_left") :
    motion.x = -SPEED
    self.scale.y = -abs(self.scale.y)
    $Sprite.play("Walk")

else :
    $Sprite.play("Idle")
    motion.x = 0
if is_on_floor() :
    if Input.is_action_just_pressed("ui_up") :
        motion.y = -550
else :
    $Sprite.play("Idle")
answered Jun 23 by Eric Ellingson (578 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.