Corona物理不推动身体。

我正在开发一个俯视角游戏。

我有两个物理体:玩家和房子。我不希望玩家能够走到房子的位置。我已经添加了这两个物体。

physics.addBody(part.house, "static", {shape=bodies.houses[1]})

physics.addBody(Player, {density=200,radius=30})

房子物体的形状是由一个数组定义的。

bodies.houses = {
                    {-120, 90, -60, 90, -60, 15, 30, 15, 110, -60, 110, -170, 30, -245, -120, -245},
                    {10, 10, 10, 0, 0, 0, 0, 10},
                    {10, 10, 10, 0, 0, 0, 0, 10}
                }

物体形状本身完全贴合图像。但是玩家仍然可以跑到房子上。请帮忙解决。

--EDIT 1 玩家是通过以下库进行移动的:

local StickLib   = require("lib_analog_stick")
点赞
用户2726734
用户2726734

你的建筑物的形状不符合 corona 文档 要求的凸性:

corona 文档:多边形形状必须完全是凸的。你不能创建有凹曲折弯的形状,比如碗或杯子。要完成这样的任务,你必须将物体从多个多边形组装起来,就像在多元素物体中所解释的那样。

凸多边形:在凸多边形中,两点之间的线段始终不会越过多边形的边界。

你可以看到它不是凸形状,因为黑色线段离开了形状,但两端都在边界上。你可以将底部矩形部分(在绿线下面)拆成另一个物体来解决这个问题。

physics.addBody(part.house, "static",
   {shape={-120, 15, -60, 15, 30, 15, 110, -60, 110, -170, 30, -245, -120, -245}},
   {shape={-120, 90, -60, 90, -60, 15, -120, 15}}
)

非凸形状

2015-01-02 03:22:01