Air Hockey: How to move Paddle?

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

Whats the best way to create a paddle for a Air Hockey Game?
I’m using a rigid body and here’s my current code. But it looks really ugly when playing, because it moves only after the distance to player is bigger than 20 px. And if I remove that distance check, its starts to bounce on that point, like jittering.

extends RigidBody2D

const SPEED = 2000

var destination = null

func _integrate_forces(_state):
	if destination != null:
		var direction = (destination - global_position).normalized()
		var distance_to_player = global_position.distance_to(destination)
		if distance_to_player > 20:
			linear_velocity = direction * SPEED
		elif distance_to_player > 3:
			linear_velocity = direction * SPEED * 0.20
		else:
			linear_velocity = Vector2.ZERO
		
:bust_in_silhouette: Reply From: dulvui

I found the solution for now by multiplying the distance to touch position to the linear velocity.extends RigidBody2D

export var touch_rect:Rect2

const SPEED = 30

var destination = null

func _integrate_forces(_state):
	if destination != null:
		var direction = (destination - global_position).normalized()
		var distance_to_player = global_position.distance_to(destination)
		linear_velocity = direction * SPEED * distance_to_player
			

func _input(event):
	if touch_rect.has_point(event.position):
		destination = event.position

This is interesting. I think I can learn from this.

GamersPointeGames | 2020-03-01 21:28

This “solution” has one tiny drawback though: the paddle will move with different speeds depending on the distance towards the destination. See my answer over here for a solution without that problem (it’s for a KinematicBody2D though).

njamster | 2020-03-01 21:17

Yes you’re right. Thanks for your solution!
I’ll try your solution too, maybe it’s perfect to create the CPU, because with my movement the CPU doesn’t play well because if the speed problem you mentioned.

dulvui | 2020-03-02 10:17