上周我没有写WR。 在完成上一个项目后,我找不到使车轮再次转动的任何东西,因此我进入了慢速模式。 我没有动力。
保持良好的生产势头是困难的,甚至在您中断连胜并且不知道下一步该怎么做时更难。 那些在Twitter上关注我的人可能已经意识到,我连续发布很多工作,然后沉默一两周。 在这个时期,我处于低谷,可能与他人保持距离,这根本不健康。 我一直在竭尽全力站起来,做任何事情来寻找不断消失的动力。
- 探索独立游戏最丰富的发行商的过去,现在和未来
- ELSCROLLS V“ SKYRIM”:一款开放世界的RPG游戏,让您对真实世界表示再见
- GameDev思想:游戏开发成功的秘诀
- GBJAM-5验尸
- 假期模式已激活!
有点令人沮丧,是吧? 确实如此,但是现在我想我又重新恢复了自我! 我的生产力不是很好,但是我可以逐步建立自己的步伐并集中精力继续前进。 这就是我本周的工作。
团结与怪癖
当我尝试挖掘出我真正想要创建的东西时,我记得每次我进入游戏困境或开始一个新项目时,我都需要一遍又一遍地编写相同的代码,通常是平台代码。 因此,要对此进行更改,我启动了Unity并决定从头开始创建Platformer Engine,并且由于我只是使用Game Maker和Pico-8来做到这一点,所以这将是一个挑战! 我说要学习Unity一次又一次。
但是每个人在开始另一个2D Unity项目时都会问自己的第一个问题是:我应该使用内置的物理学还是创建自己的物理学? 由于我的游戏没有令人信服的物理原理,所以也许不使用它是一个更好的选择。 这意味着要创建自己的碰撞系统和物理原理! 这就是我正在做的。
经过大约2或3天的时间弄乱了引擎,这是我得到的:

该方法
如您在图像中看到的,我正在投射一些射线以检查身体周围是否有物体。 没有坡度,该算法非常简单:
//水平方向
Vector2起点=新Vector2(boxCollider.center.x,boxCollider.yMin);
Vector2端点=新的Vector2(boxCollider.center.x,boxCollider.yMax);
浮动距离= boxCollider.width / 2 + Mathf.Abs(_velocity.x)+边距;
dir =新的Vector2(_direction.x,0);
//将光线从起点到终点投射到一个方向的函数,//具有一定的距离和光线数量。 返回是否撞到// //!
if(CastRays(输出hitInfo,起点,终点,dir,距离,horizontalRays))
{
//转换到碰撞点并将速度设置为零,这样它就不会通过它
transform.Translate(dir *(hitInfo.distance-boxCollider.width / 2-margin));
_velocity =新的Vector2(0,_velocity.y);
}
这个想法是,对于水平和垂直运动,将射线从身体中央向速度方向投射,其长度等于从身体中央到边缘的距离加速度。 这样,我们可以判断运动发生之前是否会发生碰撞。 如果检测到碰撞,则将身体移动到发生碰撞的确切点,并将速度设置为零。
对于水平斜坡,我检查了水平运动,以确定碰撞对象是否为斜坡地形。 如果是这样,我将身体移到斜坡内,并向下投射垂直射线,以在斜坡表面上找到目标所在的点。 然后我把它移到那里! 让我说明一下:

非常简单,我可以从身体顶部投射一些光线,以检查是否需要将其移动到斜坡上!
结论
即使这只是一个简短的报告,但我很高兴能重回这些每周的报告。 它使我不断前进,并使我想出东西向人们展示! 与往常一样,您可以在DM上通过DM或消息与我联系,我很乐意与您讨论代码!
感谢收听,
Matheus Mortatti。