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

in Engine
reshown

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")
``````
by (1,599 points)