mcse 发表于 2009-7-21 23:54:48

如何判断A,B两个对象没有碰撞

RT,若判断碰撞,可以用碰撞事件,但如何判断没碰撞

血色冰凌 发表于 2009-7-22 15:21:35

计划运动或是要决定具体行动时,察看实例是否与其它对象在确定的地点碰撞是一件十分重要的事。为此需要用到下面的程序。所有的这些函数有三个共有参数:参数 obj 是某对象,关键字 all ,或是某实例的 id 名。参数 prec 是是否启用精确检测或是仅仅使用实例的碰撞盒。精确检测只有当实例的精灵设定了精确碰撞检测时才有效。参数 notme 可以设为 true ( 1 ),使调用的实例不会被检测。所有的这些函数返回值为被碰撞实例的 id 名,如果没有碰撞就返回一个负值 。

collision_point(x,y,obj,prec,notme) 这个函数测试在( x , y )位置是否和实体对象 obj 有碰撞。
collision_rectangle(x1,y1,x2,y2,obj,prec,notme) 这个函数测试指定对角的矩形(已填充)是否和实体对象 obj 有碰撞。举例来说,你可以使用这个函数测试某个区域里是否没有障碍物。
collision_circle(xc,yc,radius,obj,prec,notme) 这个函数测试指定圆心( xc , yc )的圆(已填充)是否和实体对象 obj 有碰撞。举例来说,你可以使用这个函数测试某对象是否靠近某特点位置。
collision_ellipse(x1,y1,x2,y2,obj,prec,notme) 这个函数测试指定对角的椭圆(已填充)是否和实体对象 obj 有碰撞。
collision_line(x1,y1,x2,y2,obj,prec,notme) 这个函数测试线段( x1 , y1 )到 (x2,y2) 是否和实体对象 obj 有碰撞。这是个强大的函数。你可以这样使用这个函数,通过检测线段是否与他们之间的墙相交来测试某实例是否可以看到另一实例。


在step里用IF对上述函数进行反向判断就可以了

franniss 发表于 2009-7-23 18:53:47

血色贴的是自由度很高的方法,熟悉以后基本都会用~

用碰撞事件判断没碰撞,可以创建时设置一个变量
step event 保持初始值
collision event 令其变化
这样变量的值会反映是否碰撞了~
页: [1]
查看完整版本: 如何判断A,B两个对象没有碰撞