J'ai quelques problèmes avec les formes personnalisées en couronne.Corona SDK corps physiques personnalisés
Voici mon code et ce qu'il fait, c'est que j'ajoute des sphères à la scène afin qu'elles tombent dans un panier, ce panier est l'objet forme personnalisée que j'ai défini dans la fonction newBasket(), le problème c'est que le panier entre en collision avec l'objet au sol mais il ne heurte pas les sphères et je ne sais pas pourquoi, s'il vous plaît quelqu'un m'aider ici, je ne trouve pas de solution ailleurs, merci d'avance.
_W = display.contentWidth
_H = display.contentHeight
--Physics
local physics = require("physics")
physics.start()
physics.setDrawMode("debug")
-- iOS
display.setStatusBar(display.HiddenStatusBar)
-- screen boundaries
local ground = display.newRect(0, _H, _W, 5)
local leftWall = display.newRect(0,0,1,_H)
local rightWall = display.newRect(_W,0,1,_H)
physics.addBody(ground, "static", {friction = .2, bounce = .1})
physics.addBody(leftWall, "static", {friction = .2, bounce = .1})
physics.addBody(rightWall, "static", {friction = .2, bounce = .1})
local function newBasket()
local body = display.newImage("assets/basket.png")
body.x = 0 body.y = 0
local physics_body = {}
physics_body["basket"] = {
{
--LeftArm
density = 10, friction = 10, bounce = 0.15,
shape = {-126, 40, -110, 40, -140, -64, -156, -64}
},
{
--Bottom
density = 10, friction = 1, bounce = 0,
shape = {-121, 60, 125, 60, 128, 40, -126, 40}
},
{
--RightArm
density = 10, friction = 10, bounce = 0.15,
shape = {113, 40, 129, 40, 158, -64, 143, -64}
}
}
physics.addBody(body, unpack(physics_body["basket"]))
return body
end
local basket = newBasket()
basket.x = _W * .5 basket.y = _H - 100
local function newPlanet()
local planets = {
{img = "bigBall.png", radius = 45},
{img = "mediumBall.png", radius = 30},
{img = "smallBall.png", radius = 20}
}
local n = math.random(1,3)
local img = "assets/" .. planets[n].img
local ball = display.newImage(img)
ball.x = math.random((_W * 0.5) -100, (_W * 0.5) + 100) ball.y = 0
physics.addBody(ball, {bounce = 0.3, radius = planets[n].radius})
end
local function spawnPlanets(number)
local function spawn(e)
newPlanet()
if(e.count == number) then
timer.cancel(tmr)
tmr = nil
end
end
tmr = timer.performWithDelay(500, spawn, number)
end
spawnPlanets(20)
Vous êtes monsieur génial !, ouais je suivais un vieux tutoriel sur les objets physic complexes et le type défini les formes Dans l'ordre du CounterClokwise, j'ai lu la documentation mais je ne comprenais pas pourquoi ce mec fonctionnait bien, j'ai même essayé d'utiliser les formes dans le sens des aiguilles d'une montre mais je n'ai pas travaillé ... j'ai encore besoin de comprendre ce qui s'est passé. pour "phrase que vous avez faite là, vous avez déclaré un newRect? ... hmm et que contentCenter et Height sont le centre local du corps de la physique je suppose, alors pourquoi avez-vous déclaré un newRect? – ershin69
J'ai utilisé un rectangle parce que je n'avais pas vos images et dans Corona, vos corps physiques doivent être attachés à des objets d'affichage. Vous pouvez simplement remplacer le newRect par l'image de votre choix. display.contentCenterX est le centre de l'écran. – six8