Questions tagged «mathematics»

数学问题涉及游戏开发中使用的算术,几何,微积分,公式和其他计算。

2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

1
进行平面反射时要考虑波浪
我一直在研究SDK中Nvidia的示例,尤其是Island11项目,并且我发现了一些对HLSL代码感到好奇的东西,该代码根据波高的状态上下校正反射。 自然地,在检查了简短的代码段之后: // calculating correction that shifts reflection up/down according to water wave Y position float4 projected_waveheight = mul(float4(input.positionWS.x,input.positionWS.y,input.positionWS.z,1),g_ModelViewProjectionMatrix); float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; projected_waveheight = mul(float4(input.positionWS.x,-0.8,input.positionWS.z,1),g_ModelViewProjectionMatrix); waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; reflection_disturbance.y=max(-0.15,waveheight_correction+reflection_disturbance.y); 我的第一个猜测是,当它受到垂直扰动(波浪)时,它会补偿平面反射,将反射的几何图形移动到一个什么都没有的位置,而水只是像没有东西或只有天空一样被渲染: 现在,那是天空在反射,我们应该看到该地形的绿色/灰色/黄色反射与水线基线相关的地方。我的问题是,现在我无法真正查明其背后的逻辑是什么。投影波浪/水几何图形的一个点的实际世界空间位置,然后乘以-.5f,仅进行同一点的另一个投影,这一次其y坐标更改为-0.8(为什么是-0.8?)。 代码中的线索似乎表明它是通过反复试验得出的,因为存在冗余。例如,作者采用投影的y坐标的负一半(在w除后): float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; 然后对第二点做同样的事情(我想只是为了肯定,为了得到某种区别),并将它们结合起来: waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; 通过除以2,我看不出质量改善方面有什么区别(如果有人愿意纠正我,请这样做)。问题的症结似乎是预计y的差异,为什么呢?这种冗余以及-.8f和-0.15f的任意选择使我得出结论,这可能是启发式/猜测式工作的组合。是否有逻辑上的依据,或者只是绝望的破解? 这是代码段修复的初始问题的夸张,在最低细分级别上观察到。希望这可能会引发一个我想念的想法。-.8f可能是一个参考高度,从中可以推断出多少扰动纹理坐标以采样平面反射的几何体渲染,而-.15f可能是下限,这是一种安全措施。


4
如何检测在线碰撞中的2D线?
我是一名Flash动作脚本游戏开发人员,他对数学有些落后,尽管我发现物理学既有趣又很酷。 作为参考,这是与我正在制作的游戏类似的游戏:纠结的Flash游戏 我已经使这个复杂的游戏几乎完全完成了逻辑。但是,当两条线相交时,我需要那些相交或“缠结”的线来显示不同的颜色。红色。 如果您可以提出一种检测线段碰撞的算法,那对您来说真的非常好。我基本上是一个喜欢“视觉上”而非“算术上”思考的人:) 编辑:我想添加一些图表,以使想法更清晰地传达 PS我正在尝试使功能 private function isIntersecting(A:Point, B:Point, C:Point, D:Point):Boolean 提前致谢。



5
如何从全局坐标空间转换为局部空间?
给定一个名为的实体EntityA,我想定义一个局部坐标空间,其中的位置EntityA是原点,其航向矢量是X轴,航向矢量的法线是Y轴: 给定它们的全局坐标,我如何找到另一个实体在EntityA本地空间中的位置? 例如:EntityA的全局位置是(50,50),而的全局位置EntityB是(80,90)。那么EntityB在EntityA的本地空间中的位置是什么? 编辑:请轻松进行数学运算。

8
将2D曲线转换为点以进行数据存储
我创建了一种算法,可以将任何曲线(即路径)转换为最小点数,以便将其保存到文件或数据库中。 该方法很简单:它以相等的步长移动三个点,并测量这些点形成的线之间的角度。如果角度大于公差,则会在该点处创建一条新的三次曲线。然后它将线向前移动并再次测量角度… 对于那些知道Android Path类的人-请注意dstPath是一个自定义类,它将点记录到Array中,以便稍后保存点,而srcPath是Regions联合的结果,因此对我没有关键点保存。 问题在于,如下面的代码所示,该圆形看起来并不平滑,该图像是由下面的代码生成的,其中的源路径由一个完美的圆形和矩形组成。我试图更改公差角度和步长,但没有任何帮助。我想知道您是否可以建议对此算法进行任何改进或采用其他方法。 编辑:我现在为使用Android java的用户发布了完整的代码,因此他们可以轻松地尝试和试验。 public class CurveSavePointsActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CurveView(this)); } class CurveView extends View{ Path srcPath, dstPath; Paint srcPaint = new Paint(Paint.ANTI_ALIAS_FLAG); Paint dstPaint = new Paint(Paint.ANTI_ALIAS_FLAG); public CurveView(Context context) { super(context); srcPaint.setColor(Color.BLACK); srcPaint.setStyle(Style.STROKE); srcPaint.setStrokeWidth(2); srcPaint.setTextSize(20); dstPaint.setColor(Color.BLUE); dstPaint.setStyle(Style.STROKE); dstPaint.setStrokeWidth(2); …

2
三位相互竞争的英雄的公式,每位都有一个可以击败的英雄和一个被击败的英雄
我正在尝试为我拥有的项目设计游戏,主要思想是: 3种英雄类型 每个英雄3个统计 不涉及任何级别,因此差异必须位于统计数据上。 战斗逻辑-战斗的逻辑是,类型1英雄有很大的机会赢得类型2英雄,类型2英雄有很好的机会赢得类型2英雄,类型3英雄有很好的机会赢得类型2英雄。 一个多星期以来,我试图找到一个基于统计信息的公式,可以解决这个问题,但是我不能,昨天我正在干预数字,它很不错,但是我无法从中提取公式。 您能否指导我或给我一些提示,我应该如何开始在满足战斗逻辑的非lvl游戏上创建公式?

2
我正在寻找使用向量创建逼真的汽车运动
我已经仔细检查了如何执行此操作,并找到了此http://www.helixsoft.nl/articles/circle/sincos.htm我已经尝试了一下,但是显示的大多数功能都无法正常工作,我只是出错了因为它们不存在。我看过cos和sin函数,但不了解如何使用它们或如何使用矢量使汽车运动正常工作。我没有代码,因为我不确定该怎么办。 任何帮助表示赞赏。 编辑: 我有一些限制,必须在我的游戏中使用TL引擎,不允许添加任何形式的物理引擎。必须使用c ++编程。这是我尝试遵循我提供的链接中所做的操作后得到的示例。 if(myEngine->KeyHeld(Key_W)) { length += carSpeedIncrement; } if(myEngine->KeyHeld(Key_S)) { length -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_A)) { angle -= carSpeedIncrement; } if(myEngine->KeyHeld(Key_D)) { angle += carSpeedIncrement; } carVolocityX = cos(angle); carVolocityZ = cos(angle); car->MoveX(carVolocityX * frameTime); car->MoveZ(carVolocityZ * frameTime);

1
2D直升机游戏,如何创建走廊墙?
我正在研究改编经典的“直升机”游戏(即http://www.addictinggames.com/helicopter.html),但我还没有弄清楚如何创建墙生成引擎。 伪代码中有任何指针吗?我对中间的对象不是很感兴趣-只是随着游戏的进行而以增加难度(更多闭合,具有更多意外曲线)的方式生成边的方法。

4
如何让AI代理沿着曲线移动?
目前,我非常基本的AI框架中的代理沿着由一系列点组成的锯齿状路径移动。 他们只需将位置从一个点移动到另一个点即可。当他们到达下一个点时,他们会前进到下一个,依此类推。如何更改此设置,以便它们沿着路径的弯曲版本平滑移动,以及如何生成曲线?

4
我的角色会在哪里停下来?
许多年前,我为预算伪3D游戏编写了一些AI。我从来没有真正计算出最好的方法,这是计算一次,如果敌人现在停下来了,那敌人会去哪里。例如: 敌人目前位于X = 540.0。 敌人以每帧10像素向右移动。 当敌人想要停止时,它的速度将每帧降低1像素,直到达到零。 有没有一个简单的公式可以让我知道敌人完全停止时其最终位置?我最终对可以满足我的需求的偏移量进行了预先计算和硬编码,但对于速度不同的敌人,则必须分别计算。

4
GLM:欧拉角与四元数
希望您知道GL数学(GLM),因为我遇到了问题,我无法中断: 我有一组欧拉角,我需要在它们之间进行平滑插值。最好的方法是将它们转换为四元数并应用SLERP算法。 我的问题是如何用Euler Angles 初始化 glm :: quaternion? 我一遍又一遍地阅读了GLM文档,但我找不到合适的文档Quaternion constructor signature,那需要三个欧拉角。我找到的最接近的是 angleAxis()函数,该函数获取角度值和该角度的轴。请注意,我正在寻找一种方法,如何解析RotX, RotY, RotZ。 供您参考,这是上面提到的angleAxis() 函数签名: detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

4
不同插值公式的动画示例:有链接吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我记得曾经发现过一个链接到一个巨大页面的链接,该页面包含与非线性插值曲线不同的方程式,例如,如果您想平稳地停下汽车等。 有时在没有物理引擎帮助的情况下模拟某些真实世界的加速/速度行为可能很有用,这可以真正简化代码。 你知道这个页面在哪里吗?我无法为Google提供正确的关键字... 编辑:我只是搜索我以前的笔记本电脑书签,我发现它:http : //sol.gfxile.net/interpolation/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.