GameMaker为何在一个运动的object和另一个静止的object(均为非solid)的碰
答案:2 悬赏:80 手机版
解决时间 2021-12-22 03:00
- 提问者网友:活着好累
- 2021-12-21 11:09
Game Maker为何在一个运动的object和另一个静止的object(均为非solid)的碰撞事件中使用反弹动作,可是碰撞时二者都只会停下?
最佳答案
- 五星知识达人网友:想偏头吻你
- 2022-01-06 01:35
这种情况的成因比较多,最可能的一种情况是你的碰撞盒形状过于复杂,导致两个物体卡住而致。对于两个实例相互碰撞,如果其中一个没有速度,那么这个物体在反弹之中不会改变运动状态,因此静止物体不动是正常的,而运动实例碰撞的时候没有受到阻碍(即正常弹回)的时候,他应该沿着反弹后的方向继续运动下去,但是有些时候碰撞会发生一些问题,导致两个物体死死的卡在一起,那么他就会停下。
卡住一般都是在开启精确碰撞的时候容易产生的问题,因此在使用精确碰撞的时候需注意以下问题:
1. 如果两个物体都在运动,卡住的几率会增大
2. 物体运动速度会影响碰撞的精度,比如当你用速度为10的物体碰撞和速度为3的同种物体分别同方向同作用点地碰撞同一个物体的反弹方向是不一样的。而过快的物体可能会发生碰撞忽略(Collision Ignorance)的情况,因为GameMaker的速度系统是基于步的支持下,一步内的位置变化是不会考虑的,当物体速度过快的时候,两步的位移恰好跨越了被碰撞体,这时碰撞将不会发生,两者的运动状态彼此也不受到干扰
3. 形状过于复杂的碰撞盒(或者叫做碰撞笼罩)对于碰撞计算是非常不利的,因此,这种精灵尽量不要为其开启精确的反弹效果,因为复杂的碰撞盒会增大两物体碰撞后卡滞的几率,如必须使用精确碰撞和精确反弹,你可以利用新精灵来简化当前精灵的轮廓并调用新精灵的碰撞笼罩以减轻碰撞计算的压力
4. 在一些情况下,正确地使用move_outside_solid、move_outside_all、move_contact_solid、move_contact_all函数可以有效防止卡滞情况发生。
望采纳,GameMaker吧为您服务
卡住一般都是在开启精确碰撞的时候容易产生的问题,因此在使用精确碰撞的时候需注意以下问题:
1. 如果两个物体都在运动,卡住的几率会增大
2. 物体运动速度会影响碰撞的精度,比如当你用速度为10的物体碰撞和速度为3的同种物体分别同方向同作用点地碰撞同一个物体的反弹方向是不一样的。而过快的物体可能会发生碰撞忽略(Collision Ignorance)的情况,因为GameMaker的速度系统是基于步的支持下,一步内的位置变化是不会考虑的,当物体速度过快的时候,两步的位移恰好跨越了被碰撞体,这时碰撞将不会发生,两者的运动状态彼此也不受到干扰
3. 形状过于复杂的碰撞盒(或者叫做碰撞笼罩)对于碰撞计算是非常不利的,因此,这种精灵尽量不要为其开启精确的反弹效果,因为复杂的碰撞盒会增大两物体碰撞后卡滞的几率,如必须使用精确碰撞和精确反弹,你可以利用新精灵来简化当前精灵的轮廓并调用新精灵的碰撞笼罩以减轻碰撞计算的压力
4. 在一些情况下,正确地使用move_outside_solid、move_outside_all、move_contact_solid、move_contact_all函数可以有效防止卡滞情况发生。
望采纳,GameMaker吧为您服务
全部回答
- 1楼网友:轮獄道
- 2022-01-06 01:57
搜一下:Game Maker为何在一个运动的object和另一个静止的object(均为非solid)的碰
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯