C# 如何在限制面罩上制作移动汽车?
我想做一些比赛。游戏是2D的,从顶部观看。我需要一个面罩,它必须限制一条道路,以便移动汽车时充分工作:) 我尝试过逐像素碰撞,但这不是一个好主意,因为碰撞扫描总是发生在CPU负载非常大的过程中。 我想我需要一些方法,可以计算一次和下一次使用无张力计算 你有什么建议吗? 我在Xna游戏工作室工作。C# 如何在限制面罩上制作移动汽车?,c#,xna,desktop,collision,C#,Xna,Desktop,Collision,我想做一些比赛。游戏是2D的,从顶部观看。我需要一个面罩,它必须限制一条道路,以便移动汽车时充分工作:) 我尝试过逐像素碰撞,但这不是一个好主意,因为碰撞扫描总是发生在CPU负载非常大的过程中。 我想我需要一些方法,可以计算一次和下一次使用无张力计算 你有什么建议吗? 我在Xna游戏工作室工作。 请原谅我的英语:)这个问题对我来说很不清楚。但是,如果我不懂编程语言,我就发表我关于碰撞检测的一般方法;给你: // fill in the collision map, marking 'R'
请原谅我的英语:)这个问题对我来说很不清楚。但是,如果我不懂编程语言,我就发表我关于碰撞检测的一般方法;给你:
// fill in the collision map, marking 'R' in the spots where the road is and ' ' where driving is allowed, make the arrays larger to get more detail
private char[,] strCollisionMap = {
{' ', ' ', ' ', ' ', ' ' },
{' ', ' ', 'R', 'R', ' ' },
{' ', 'R', ' ', ' ', 'R' },
{'R', ' ', ' ', 'R', ' ' },
{'R', ' ', 'R', ' ', ' ' },
{' ', 'R', ' ', ' ', ' ' },
{' ', ' ', ' ', ' ', ' ' },
{' ', ' ', ' ', ' ', ' ' },
{' ', ' ', ' ', ' ', ' ' }
};
private bool IsCarOnTheRoad(float carX, float carY, int screenWidth, int screenHeight)
{
int h = strCollisionMap.GetLength(0);
int w = strCollisionMap.GetLength(1);
float fH = screenHeight / h;
float fW = screenWidth / w;
int nX = (int)Math.Round(carX / fW);
int nY = (int)Math.Round(carY / fH);
if (strCollisionMap[nX, nY] == 'R')
{
return true;
}
return false;
}
我将试着向你们解释我将如何去解决这个问题。若你们的道路看起来像在图像上,你们可以使用像素对置只为部分纹理(蓝色圆圈),并没有必要检查整个图像。然后你只检查汽车边缘(突出部分)的胶状物——微小的绿色圆圈 另一种方法是使用矢量绘制道路(创建多边形)。然后你可以检查你的车是否与内线和外线相交。这两个多边形之间都是道路
你试过什么吗?@tnw他试过问题中所述的每像素碰撞。@user3752919你应该阅读XNA碰撞()的内容,然后询问你在这里遇到的与编程相关的具体问题。如果不清楚,为什么要回答?这可能会回答这个问题(对于基于网格的游戏),但可能不会。我们只是没有足够的信息去了解。@BradleyDotNET我喜欢帮助那些通常因为语法或编程技能糟糕而被击倒的人。但你仍然完全正确,不应该那样做;)我帮助人们没有问题(出于这个原因,我回答了许多“不值得”的问题)。这一个太不清楚了,我认为还没有答案。