J2ME游戏开发论坛
欢迎您, 游客
请您在右方表单注册或登陆.
回复:各位大侠帮忙!(精灵碰撞问题) (1 个人正在浏览) (1) 游客
到底部
被收藏: 0
话题: 回复:各位大侠帮忙!(精灵碰撞问题)
#399
?全才:天才 (会员)
Fresh Boarder
帖子: 6
graphgraph
该会员已离线 点此观看该会员的个人资料
各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 0  
在写游戏中处理精灵碰撞时出现了以下问题,

可以检测到碰撞,但是当检测到碰撞时精灵和图块之间已经发生碰撞,虽然可以阻止精灵的移动,但是精灵也无法向相邻的方向移动.下面是代码:
文件附件:
文件名: code.txt
文件大小: 728

小弟是第一次写游戏,请各位大侠不吝赐教,小弟感激不尽.

忘了说了,由于我写的只是测试的代码,所以只处理了与砖块的碰撞.
帖子被编辑由 bluexo, 于 2008-09-19 16:53<br><br>帖子被编辑由 bluexo, 于 2008-09-19 23:39
 
 
  只有注册会员才能发帖
#400
一滴蔚蓝色 (管理员)
Moderator
帖子: 161
graph
该会员已离线 点此观看该会员的个人资料
回复:各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 9  
[code:1]
if(tank.collidesWith(brickMap,false))
{
//如果检测到碰撞,限制精灵在Y轴上的活动范围在碰撞位置与当前位置之间
current_Y=Math.max(tank.getY(),current_Y);
}
[/code:1]

如果触发这个语句时候,实际上坦克已经与brickMap相碰撞啦...需要把坦克归位的..就是把坦克移回没有碰撞的位置,不然的话..会一直处于碰撞状态
 
 
  只有注册会员才能发帖
#401
?全才:天才 (会员)
Fresh Boarder
帖子: 6
graphgraph
该会员已离线 点此观看该会员的个人资料
回复:各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 0  
一滴蔚蓝色 曾经说:
[quote][code:1]
if(tank.collidesWith(brickMap,false))
{
//如果检测到碰撞,限制精灵在Y轴上的活动范围在碰撞位置与当前位置之间
current_Y=Math.max(tank.getY(),current_Y);
}
[/code:1]

如果触发这个语句时候,实际上坦克已经与brickMap相碰撞啦...需要把坦克归位的..就是把坦克移回没有碰撞的位置,不然的话..会一直处于碰撞状态[/quote]

思想是理解了,请问有什么好的实现方法么?

originX=tank.getX();
originY=tank.getY();
if(tank.collidesWith(brickMap,false))
{
//如果检测到碰撞,则将精灵复位
tank.setPosition(originX,originY);
}else
tank.setPosition(current_X, current_Y);
如果这样写问题仍然存在

帖子被编辑由 bluexo, 于 2008-09-19 23:46
 
 
  只有注册会员才能发帖
#402
一滴蔚蓝色 (管理员)
Moderator
帖子: 161
graph
该会员已离线 点此观看该会员的个人资料
回复:各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 9  
这样当然也有问题啦
originX=tank.getX();
originY=tank.getY();
这两句还是已经移动过的(碰撞了的)坐标

应该寻找移动前的坐标,或者把坦克移动到紧贴地图的位置(未碰撞)
 
 
  只有注册会员才能发帖
#403
?全才:天才 (会员)
Fresh Boarder
帖子: 6
graphgraph
该会员已离线 点此观看该会员的个人资料
回复:各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 0  
一滴蔚蓝色 曾经说:
这样当然也有问题啦
originX=tank.getX();
originY=tank.getY();
这两句还是已经移动过的(碰撞了的)坐标

应该寻找移动前的坐标,或者把坦克移动到紧贴地图的位置(未碰撞)


首先向大侠致敬,难道大侠的意思是让我利用砖块层的图块坐标来处理与精灵的碰撞?
 
 
  只有注册会员才能发帖
#404
一滴蔚蓝色 (管理员)
Moderator
帖子: 161
graph
该会员已离线 点此观看该会员的个人资料
回复:各位大侠帮忙!(精灵碰撞问题) 2 月 之前 评分: 9  
是的呀,我觉得从道理上也是这样啊..

也可以把坦克移动到&quot;移动前的坐标&quot;,这样也可以

只是如果坦克的速度过大的话,坦克会很远的距离就撞上砖块的..

想象一下
 
 
  只有注册会员才能发帖
到顶部