【互动媒体专题设计】《打群架》——模拟《拥挤城市》

本文介绍了使用p5.js库实现互动媒体项目《打群架》,模拟热门游戏《拥挤城市》。文章详细探讨了镜头跟随、随机漫游、万有引力(斥力)及摩擦力的实现技术,通过代码展示了如何利用p5.play库的camera1进行镜头跟随,使用noise函数实现小球平滑运动,以及应用斥力和引力公式模拟小球间的交互。此外,还讨论了参数微调对游戏可玩性的影响。
摘要由CSDN通过智能技术生成

拥挤城市片

背景&创意

在新的一个学期里,我们继续在互动媒体的道路上前行,这个学期主要是学习用代码将我们真实的世界尽可能的还原。比如,如何将牛顿力学写入代码,如何让一个物体看上去是在自主运动等。
这就让我想到了最近在Instagram上疯狂投放广告的拥挤城市。我的实践就是将这个游戏模拟出来。
话不多说,强烈建议读者们先玩玩!
点下面试玩!
http://45.32.81.13/JiangFeng/gangWar/
使用WSAD键控制粒子的移动,按下鼠标可以将视野扩大
点上面试玩!
强烈推荐试玩!
(自有服务器,所以加载会慢一点,可能需要五秒左右)

不方便玩吗?那看看我们准备的视频吧!
https://v.youku.com/v_show/id_XNDEyNTUxNDc2OA==.html?spm=a2h3j.8428770.3416059.1

技术

应该还挺好玩的吧!
那我们现在来看看这个游戏中的一些技术细节。

镜头跟随

镜头跟随是游戏带给玩家沉浸感的一个重要手段。最早是Nintendo在超级马里奥中引入。

在此之前,游戏的背景是固定的,人物在地图上跑来跑去,如果超出了屏幕,要么死亡,要么进入下一个游戏背景。大家很熟悉的贪吃蛇就是一个固定视角的游戏。

贪吃蛇
在任天堂引入镜头跟随之后,人物或者说是游戏中的主角就会主要处于屏幕的中心,人物运动的时候背景随之改变。这一点应该很好理解。
超级马里奥

在《打群架》中,镜头也是跟随代表玩家的小球运动。
在这里插入图片描述

考虑到游戏的可玩性,还对视野进行了控制,当按下鼠标的时候,镜头拉远,获得更大的视野,防止玩家在游戏过程中脱离主战场。以下是小视野和大视野的对比
在这里插入图片描述
在这里插入图片描述

实现

在本项目中,我们使用的是p5.js library中的p5.play库中的camera1。通过同步camera和玩家小球的x,y坐标,达到运动跟随的效果。

代码如下:

camera.position.x = this.particleArray[i].location.x;
camera.position.y = this.particleArray[i].location.y;

通过对zoom的值进行调整,而获得不同大小的视野。
代码如下:

if(mouseIsPressed)
 camera.zoom = 2;
else
  camera.zoom = 5;

随机漫游

在两款游戏中,小球(或者说人物)的随机漫游是很重要的一环。这样能让游戏的难度上升,并且使得小球更加人格化。

没有被染色的小球和NPC玩家的小球都是随机漫游,玩家小球需要通过键盘输入控制。

实现

随机漫游时我们这个学期课程中很重要的一个知识点,一说到随机,大部分人的脑海中第一个蹦出来的词就是random,以及它的衍生函数。但是使用random对小球进行操控会让小球的运动不连续,这样对真实世界的模拟就非常的差。

解决方案是noise函数,noise函数是一条连续的随机函数,用两条noise函数曲线分别映射一个小球x和y轴上的运动,就可以获得一个运动轨迹平滑连续的小球。
代码如下:

roam() {
   
  this.tx += 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值