我正在用Java制作一个Pacman玩家和Player游戏,我想知道我是否在以一种很好的方式实现游戏中的移动。任何将减少代码大小或使程序更快的东西都是需要的。
请注意,游戏还没有完成,我只在第一玩家(Pacman)上工作过。我还没有开始对第二名球员(幽灵)或迷宫或小球。
Movable接口
public interface Movable {
void move();
}
Pacman / Player One
此类表示第一名玩家,或Pacman字符。它实现了Movable。
@Override
public void move() {
if (this.direction == D
下面的代码来自Microsoft示例这里。这是一个相当简单的刚体模拟,它忽略了许多物理效应(如角动量),但它确实试图将物体(球体)推开,以免它们相互渗透。
然而,模拟不仅允许球体穿透,而且当许多球体相互堆叠在一起时,小球体几乎可以完全进入较大的球体内。如果我让所有的球体都有相同的半径和质量,那么模拟效果就会相当好(以最小的互侵彻)。
有人能解释一下为什么会有任何相互渗透吗?因为它移动了球体的位置,所以似乎不可能进行相互渗透。
对于仿真中的每个球体,这种方法在每一个其他球体上都被调用。
/// <summary>
// Given 2 spheres with velocity, m
因此,我的目标是检测帕克曼什么时候吃了一个小球,但是从来没有调用过OnCollisionEnter2D方法。我是团结组织的新手,很抱歉,如果这是一个简单的修复。唯一的“捕获”是所有的东西都是动态生成的,所以这可能是问题的原因之一。
public class World : MonoBehavior
{
GameObject pacman;
List<GameObject> pellets;
// Use this for initialization
void Start()
{
pellets = new List&l
我想知道这是否是一个好主意,实现简单的二维碰撞检测矩形如下:
创建自己的冲突检测类,它扩展了矩形类。
然后,当实例化该对象执行诸如Collision col = new Rectangle(); <-我是应该这样做还是应该避免的东西?我知道我'can',但我应该吗?
我想扩展矩形类,因为使用了contains()和intersects()方法;我是应该这样做呢,还是应该为Java中的2D碰撞检测做些别的事情呢?
我不确定我们的任务是否以最具功能性的方式呈现,但我必须使用它。我有一个代表吃豆人游戏状态的“地图”:
B B B B
B P _ B
B . . B
B B B B
其中B是边界瓦片,P是吃豆人,_是空白空间,.是食物颗粒。在移动pacman时,有许多规则,但请考虑其中一条:
当吃豆人移动到一个被食物小球占据的瓷砖中时,用一个空白空间替换吃豆人瓷砖,用吃豆人替换食物小球。此函数的定义如下:
move:: [[Char]] -> [[Char]]
现在,我已经得到了一些函数,可以给出pacman的(x,y)坐标元组和他的新位置,并且我计划使用!!函数来“覆盖”这些块。但是,我对诸如:之类的
我需要帮助做一个自上而下的射击游戏,我不知道如何阻止我的球员穿过这个街区,下面是我的玩家类和我的keyInput类。我刚开始玩游戏编程,我搜索了很多不同的解决方案,但不知道如何实现它们。(对不起,如果我不是很详细,我只是不知道如何正确地解释我的代码)*图像是什么,当你运行代码,我可以移动播放器
package main;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
public class Player extends GameObject{
Handler hand