我在游戏中遇到碰撞问题。
我有一个物理室和一些物体。我有两个uses physics
处于活动状态的对象。我让它们碰撞。它仍然可以。
但是当我尝试uses physics
在我的房间物理之外添加一些对象时,之前的两个对象不能再次碰撞。
如果我删除没有uses physics
的对象,之前的两个对象可能会再次碰撞。
如何解决uses physics
之前的 2 个对象。为了能够像以前一样碰撞,即使我在我的物理室中添加了非物理对象。
我很抱歉我的英语不好。
我在游戏中遇到碰撞问题。
我有一个物理室和一些物体。我有两个uses physics
处于活动状态的对象。我让它们碰撞。它仍然可以。
但是当我尝试uses physics
在我的房间物理之外添加一些对象时,之前的两个对象不能再次碰撞。
如果我删除没有uses physics
的对象,之前的两个对象可能会再次碰撞。
如何解决uses physics
之前的 2 个对象。为了能够像以前一样碰撞,即使我在我的物理室中添加了非物理对象。
我很抱歉我的英语不好。
我认为不可能检测到物理对象和非物理对象之间的碰撞。但是,您可以做的是模拟一个物理对象,使其表现得像一个非物理对象。
启用use physics
非物理对象,但使用非物理属性(例如 vspeed、gravity 等)对其进行操作。将其设为传感器,这样它就会触发碰撞而不会导致其他物体反弹。在对象的 Step/End Step 事件中,添加以下 GML 代码,该代码将根据对非物理属性的任何更改来更新对象的物理属性:
phy_fixed_rotation = true;
vspeed += gravity;
vspeed -= sign( vspeed ) * min( abs( vspeed ), friction );
hspeed -= sign( hspeed ) * min( abs( hspeed ), friction );
phy_speed_x = hspeed;
phy_speed_y = vspeed;
phy_position_x = x;
phy_position_y = y;
phy_rotation = -image_angle;
现在您应该能够使用非物理属性移动对象,因此应该检测到碰撞。