I need to make a jeopardy type wheel for one of my project and am debating wether or not I should use physics. I have rarely used physics in any of my project so my experience with the library is rather small.
The wheel needs to spin by delta speed of touch. The wheel would have a clicker uptop that would provide a little bit of rotation dampening. Would the physics library be a good fit here or would handling the rotations myself be preferable.
The physics library is one area of codea that I do not have a good grasp of.
@Briarfox Here’s a spinning wheel. I haven’t added anything to slow it down.
EDIT: changes made to make it spin when the screen is touched and it will also slow down.
displayMode(FULLSCREEN)
function setup()
xx=0
c=physics.body(CIRCLE,200)
c.x=WIDTH/2
c.y=HEIGHT/2
c.gravityScale=0
c.angularVelocity=0
c.angularDamping=.2
end
function draw()
background(40, 40, 50)
text("tap screen to spin",WIDTH/2,HEIGHT-100)
pushMatrix()
translate(WIDTH/2,HEIGHT/2)
xx=xx+1
rotate(c.angle)
stroke(0)
fill(255)
ellipse(0,0,400)
stroke(0)
strokeWidth(5)
line(0,0,200,0)
popMatrix()
end
function touched(t)
if t.state==BEGAN then
c.angularVelocity=200
end
end
Here’s a very rough non-physics one with a “clacker” and “peg” type slowing mechanism.
-- jeopardy
-- Use this function to perform your initial setup
function setup()
ang=0
angvel=0
damping=0.01 --slowdown of the wheel based on friction
clackerdamping=0.1 --slowdown of wheel based on "clacker"
prevang=0
numsegments=4 --number of "pegs" on wheel which the clacker can hit
end
-- This function gets called once every frame
function draw()
-- This sets a dark background color
background(40, 40, 50)
pushMatrix()
translate(WIDTH/2,HEIGHT/2)
rotate(ang)
sprite("Small World:Mote Sad",0,0,200,200)
popMatrix()
ang = ang + angvel
if angvel>0 then
angvel = angvel - damping
end
--add the clacker damping
for i=0,numsegments do
if math.fmod(ang+(i*360)/numsegments,360)<math.fmod(prevang+(i*360)/numsegments,360) then
sound(SOUND_HIT, 45932)
if angvel>0 then
angvel = angvel - clackerdamping
end
end
end
prevang=ang
end
function touched(t)
if t.state==BEGAN then
angvel=20
end
end