我有一个2维数组叫做board
,也就是32x32。每个元素0
表示清除路径,-1
表示墙。
窗口分辨率为800x800,这意味着板的每个元素的宽度和高度均为25。
我的步行者位置在屏幕坐标上。我试图实现接下来的两个函数,基本上知道我是否可以将Pacman移动到某个位置(在屏幕坐标中)。
public static boolean canMove(Pair<Integer> pacmanPos, int[][] board) {
Pair<Integer> boardPos = pacmanPosToBoardPos(pacmanPos);
int j = boardPos.getX();
int i = boardPos.getY();
return board[i][j] != -1;
}
public static Pair<Integer> pacmanPosToBoardPos(Pair<Integer> pacmanPos) {
int x = pacmanPos.getX();
int y = pacmanPos.getY();
int newX = (int)Math.round((double)(x+12.5) / 25.0) % 32;
int newY = (int)Math.round((double)(y+12.5) / 25.0) % 32;
return new Pair<Integer>(newX, newY);
}
这是我最好的机会。如果有意义的话,我在x和y中添加了12.5来表示
board
的某个元素的“中心”。
显然,这是行不通的,Pacman撞到了墙上:(.有什么想法吗?
如果您想要以下映射:
co-ordinates board pos
0-24 0
25-49 1
50-74 2
etc
然后使用整数除法
int newX = (x / 25) % 32;
int newY = (y / 25) % 32;
如果您想要实际执行碰撞,并且您的Pacman具有宽度和高度,则需要在测试时偏移Pacman中心的坐标。例如,如果您向右移动,并且Pacman的宽度为25像素,则将要测试的x坐标加上12.5(如果您向左移动,则减去12.5),等等。为了避免使用非整数,可以将“中心点”放在Pacman的左上角,向右或向下移动时加25,向左或向上移动时加0。
如果要将渲染与html" target="_blank">模型分离,请使用“游戏单位”或存储Pacman位置的任何单位(而不是像素)进行上述计算,然后在渲染时对屏幕坐标应用变换。但是,您确实需要在网格索引和这些游戏单元之间进行一些映射(即使这只是意味着将位置存储为带有分数部分的网格索引,并在需要索引时将其丢弃),因为碰撞(例如与重影)不一定会发生在网格单元边界处。当然,如果您想要“像素完美”碰撞,则进行碰撞的单元与渲染单元之间的映射可以是1:1。
本文向大家介绍基于python检查矩阵计算结果,包括了基于python检查矩阵计算结果的使用技巧和注意事项,需要的朋友参考一下 鉴于最近复习线性代数计算量较大,且1800答案常常忽略一些逆阵、行列式的计算答案,故用Python写出矩阵的简单计算程序,便于检查出错的步骤。 1、行列式 可自行更改阶数 2、矩阵相乘 注意要内标相同 3、逆矩阵 自行判断|A|≠0,这里 A∗ = A−1 · |A| 以
好的,我想试试这个: > 然后检查碰撞检测,如图所示。第一种是正面碰撞,第二种是侧面碰撞。碰撞http://img802.imageshack.us/img802/2934/rectangles2.png 然后删除精灵,只保留代码中的向量。(位置和旋转)我希望如此,因为我想在这些位置添加3d Cars和他的旋转。我的意思是,在2d中没有精灵的碰撞检测。 在游戏结束时,将没有精灵。仅三维对象。 有人
所以,最近我开始用C和SFML制作一个Pacman克隆。开发游戏时一切都很顺利,直到我需要创建墙碰撞。我不擅长碰撞,所以我以为会有问题。 我想做的是检查你上方是否有一堵墙,除了你或其他什么,然后如果你与一堵墙相撞,阻止玩家。 问题是,当你撞到墙时,你很早就停下来了。有时你会陷入困境。这并不是要与代码混淆,因为代码使Pacman在你身上有一堵墙的时候不能转身,而是在遇到墙的时候停下来。 这是我刚才提
正在尝试编写java pacman代码。我用BuffereImage来存储迷宫。为了检查pacman与墙壁的碰撞,我使用了2d int数组,值0表示空白
我只使用Box2D进行碰撞检测。我的代码与Ray Wenderlich教程中的代码类似。 我遇到了这个方法的问题。由于代码绕过了Box2D模拟,因此没有碰撞响应。因此,精灵可以重叠。我知道Box2D冲突API提供了一个单位法向量来帮助解决冲突。然而,这个矢量传达的是方向,而不是大小。因此,我无法确定应该将重叠的sprites移动多远。有人知道如何使用Box2D冲突API手动解决重叠问题吗?
我想检测rect什么时候碰到障碍物(obst1和obst2,obst3暂时不加)。我的障碍随着路径转换而移动。所有的形状都是长方形。提前感谢!!< br >以下是我的代码: