Views
love.physics.newGearJoint (Русский)
Создает GearJoint для двух тел.
Это соединение использует два других соединения типа PrismaticJoint или RevoluteJoint. Использование этого соединения требует, чтобы PrismaticJoint и RevoluteJoint соединяли тела, одно из которых является статическим. Причем статическое тело в этих соединениях должно использоваться в качестве первого. Когда вы удаляете тела или соединения, то в первую очередь нужно удалять GearJoint, а потом уже все остальное.
GearJoint использует отношение, определяющее как будут относиться друг к другу угол или расстояние соединенных объектов. Формула coordinate1 + ratio * coordinate2 всегда будет равно константному значению, которое определяется при создании соединения.
Функция
Вид
Аргументы
Joint joint1
- Первое соединение, используемое в GearJoint.
Joint joint2
- Второе соединение, используемое в GearJoint
number ratio
- Отношение.
Возвращает
Joint joint
- Новое соединение GearJoint.
Пример
Две шестеренки, одна из которых вращается мышью
world = love.physics.newWorld(0, 0, 640, 480)
love.graphics.setBackgroundColor( 64, 128, 128 )
b1 = love.physics.newBody(world, 0, 0, 0, 0) --статичное тело, к которому будут крепиться шестерни
b2 = love.physics.newBody(world, 300, 300, 50, 20)--1-я шестеренка
b3 = love.physics.newBody(world, 235, 300, 50, 20)--2-я шестеренка
--устанавливаем соединения
j1 = love.physics.newRevoluteJoint( b1, b2, 300, 300 )
j2 = love.physics.newRevoluteJoint( b1, b3, 235, 300 )
j3 = love.physics.newGearJoint( j1, j2, 1 )
j=love.physics.newMouseJoint(b2,love.mouse.getPosition())--привязываем одну шестеренку к мыши
end
function love.draw()
--рисуем первую шестеренку
love.graphics.push()
love.graphics.setColor( 255, 150, 150, 255 )
love.graphics.translate( b2:getX(), b2:getY() )
love.graphics.rotate( b2:getAngle() )
love.graphics.triangle( "fill", 0, 40, 34, -20, -34, -20 )
love.graphics.triangle( "fill", 0, -40, -34, 20, 34, 20 )
--рисуем вторую шестеренку
love.graphics.pop()
love.graphics.setColor( 150, 250, 150, 255 )
love.graphics.translate( b3:getX(), b3:getY() )
love.graphics.rotate( b3:getAngle() + math.pi/6 )
love.graphics.triangle( "fill", 0, 40, 34, -20, -34, -20 )
love.graphics.triangle( "fill", 0, -40, -34, 20, 34, 20 )
end
function love.update( dt )
j:setTarget(love.mouse.getPosition())
world:update(dt)
end
Смотрите также
Другие языки
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info