ground friction

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Before you make a thread asking for help, read this.
Post Reply
bubor
Prole
Posts: 1
Joined: Wed Feb 17, 2010 12:53 pm

ground friction

Post by bubor »

Hello everyone :)

What I'm trying to do is a game, visible from upper side. It will be curling-like game with sliding balls.
I don't need gravity but collision detection and friction is needed.

For example I throw a ball and it slides on rough surface (all seen from upper side). I want this ball to stop, because of surface roughness. Is there a simple way to do that with love?

PS: I tried to use sensors but it is complicated solution :monocle: (collision detection, setting velocity manually, etc...). I need something more simple.

from bubor with love ;)
User avatar
Fourex
Citizen
Posts: 53
Joined: Tue Nov 10, 2009 2:33 am
Location: Earth

Re: ground friction

Post by Fourex »

I've done stuff similar to this before. Each "ball" should have four variables representing it for the x position, y position, x velocity, and y velocity. I usually just use x, y, xvel, and yvel. (You could use x position, y position, direction, and velocity but working with trig is annoying.)
X and y keep track of the position, while xvel and yvel keep track of how fast the object is moving, or how much x and y change each frame. If xvel and yvel never change, then your object will keep moving in the same direction. But, if you want to add friction, all you need to do is multiply the velocities by a number smaller than one. The lower the number, the higher the friction.
If you have any more questions, just ask.

Here is an example script:

Code: Select all

function love.load()
	x = 100
	y = 100
	xvel = 6
	yvel = 6
	friction = .98 --Try chaning this to see how different numbers affect the speed of the object. Note: if this is above 1, the object will speed up!
end

function love.update()
--Applying friction to the velocities:
	xvel = xvel * friction
	yvel = yvel * friction
	
--Changing the position by the velocities:
	x = x + xvel
	y = y + yvel
end 

function love.draw()
--Drawing the object:
	love.graphics.circle("line", x, y, 10, 20)
end
User avatar
Fourex
Citizen
Posts: 53
Joined: Tue Nov 10, 2009 2:33 am
Location: Earth

Re: ground friction

Post by Fourex »

OH! I forgot about collision detection! I'll write something up! Be right back...
EDIT: I never did get around to doing that... I will eventually...
Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 8 guests