CollisionShape does not work good

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Schweini

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 _physics_process(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:

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

Dlean Jeans | 2019-06-23 04:38

:bust_in_silhouette: Reply From: Eric Ellingson

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")