【问题标题】:Collision between physics object and non physics object in physics room game maker 2物理室游戏制作者2中物理对象和非物理对象之间的碰撞
【发布时间】:2018-07-07 22:05:25
【问题描述】:
我在游戏中遇到碰撞问题。
我有一个物理室和一些物体。我有两个对象,其中uses physics 处于活动状态。
我让它们碰撞。还是没问题的。
但是当我尝试在我的房间物理中添加一些没有uses physics 的对象时,
之前的两个物体不能再碰撞了。
如果我删除没有uses physics的对象,之前的两个对象可能会再次碰撞。
如何解决之前使用uses physics 的2 个对象。为了能够像以前一样碰撞,即使我在物理室中添加了非物理对象。
对不起,我的英语不好。
【问题讨论】:
标签:
game-physics
collision
game-maker
game-maker-studio-2
【解决方案1】:
我认为不可能检测到物理对象和非物理对象之间的碰撞。但是,您可以做的是模拟一个物理对象,使其表现得像一个非物理对象。
为非物理对象启用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;
现在您应该能够使用非物理属性移动对象,因此应该可以检测到碰撞。