用户:phantom查看:6 回复:8 评论:6 创建时间:2018-08-24T10:17:25
作为一名潜水多年的老——萌新,终于在假期赶上一次活动了。还好这次小羊活动学习门槛很低,不止是我,连我的爸妈也能看懂,他们终于认可我是在学习编程而不是在打游戏了。感谢活动姐姐,感谢喵队长,感谢编程猫。
学习了三天,其实对于暗中观察编程猫多时的我,get前两天的课程早已不在话下,感觉论坛里好多dalao也是这样。偷学了几天dalao们的思路,终于在最后的课程里发现了问题。
沙滩排球游戏使用了物理引擎,这样可以非常轻松的做到球弹来弹去的效果,不过原版之中也只是开启了物理引擎,这导致看起来是在操作猪和肖恩,实际上只是在控制两个长方形撞击排球而已。后半身撞到球,球还会往后方弹开,这使得我感到了一丝违和。
这样的违和感促使我想要改编这个游戏,研究了一下发现其实只用一个很简单的办法就能做到让猪和肖恩做到向前击球的效果。那就是在猪的里面加入这些积木:
肖恩其实同理只要把速度里的x轴改为“-10”就好了。
这样在球碰到角色时,球会移动到角色所在位置然后向对方的场地内飞去,这样就有了一个角色将球击打到对面的效果了。而且这样也不会出现球卡在角色和边界之间这种奇怪的情况了。
除此之外,我还在原版的基础上制作了得分系统和球会移到失分方角色的上方这个功能,在一开始我有考虑使用变量完成这个功能。不过其实在制作过程中想到了一个更简单就能完成的方法。
我在制作时考虑到得分要让玩家能明确感觉到球落地,所以设计了在球落地时用一个变量表示游戏状态,当球落地时1秒内,球和玩家都不会动。
首先判断球有没有落地,如果落地了判断球现在在那边场地,让对方加一分,设置游戏状态为0,停止其他操作,关闭物理引擎1秒让双方都能确定这次得分。每次得分之后都要判断一下有没有哪一方已经胜利,如果没有那么就开始下一轮比赛。
游戏开始时发送初始化开始第一轮游戏,在每次有角色得分后如果比赛没有结束,那么判断现在排球的x坐标,如果x坐标小于0那么球是落到猪的场地内,肖恩得分。这样下一轮开始时排球就会出现在猪的上方,由猪发球。并且重置猪和肖恩位置重置。最后再开启物理引擎设置游戏状态为1开始游戏。
让玩家停止移动其实也很简单,只要在每一个控制移动加入一个如果判断变量game是否为1的判定即可。
最后就是作品链接:
https://lab.codemao.cn/work/2650851
除了击球的效果之外,还从别人那里学到了一些其他功能,比如积分啊,重启游戏啊之类的。不过这些东西不是自己研究出来的是学的别人的,就留给别人来讲吧。
求dalao们指导
求dalao们指导
求dalao们指导(重要的事情说三遍啊三遍。。。)
dalao们还有没有什么更好的办法啊。。。感觉物理引擎用起来方便但是感觉可修改的地方不是很多啊。。。。。。