Articles of 时间

使用animation时间打击游戏的时间?

我正在用C ++开发2D格斗游戏。 我已经完成了基本的组件,如移动,守卫,甚至是一个完美的组合系统。 我现在主要关心的是我希望游戏尽可能的平衡,因此我正在进入testing阶段。 我甚至要求父亲的帮助,因为还没有实施AI。 在游戏中,您可以使用打/踢(PK)button来连锁攻击。 但是你也可以通过长按PKbutton来收取攻击,基本上暂停animation,当攻击被充满或玩家释放button时恢复。 我注意到的一件事情是,如果你的对手在被击中时只是按下PKbutton,那么如果你最终收取你的攻击,它可以很容易地反击攻击。 这种行为基本上使收费无用,因为如果你的对手知道这一点,它永远不能通过。 所以我的观点是,我需要加一个延迟,这样计数器就不会出现(我不希望这样做,因为游戏是基于一个实际的PS2游戏,你不能以这种方式反击 – 为了logging,有一种方法通过按下保护button,或通过在正确的时间按下button来传送,然后在后面传送和反击)。 要添加这个延迟,我可以修改“损坏”animation的实际持续时间,以便它可以做我想要的,或者我可以在内部添加一个计时器,让角色进入他无法做任何事情的状态。 我想去第一个,因为你看到你不能反击使用一拳,因为你仍然在损坏animation。 但是,每个角色都有自己的一套animation,因此在理论上,开发者或者devise师(这两个都是我)可以修改一个角色的持续时间,而其他角色的角色则有一个旧值。 因此,我的问题更多的是在devise层面。 通过animation持续时间决定时间是否是一个好主意? 这是实际做了什么? 如果我有50个字符,当我发现另一个时间问题,这将意味着修改每个人的animation…但内部添加计时器似乎更像是一个补丁,实际微调…

以子弹之间的时间间隔来制造子弹

我怎么能让我的敌人间隔发射子弹? 我已经有敌人射击子弹了,但是我的问题是,它会立即射出下一颗子弹,使它看起来像一条线,而不是子弹之间的间隙子弹。 我试图使用gluttimerfunc但它不工作,因为它只是延迟子弹的触发器,但一旦触发器(布尔语句)设置为true,它会立即在屏幕上拍摄最大的子弹。

我应该如何检测与“时间线”上的对象的碰撞?

我想复制这个游戏的玩家粉碎墙壁的机制,以精确的时间到背景节奏。 我应该如何检查每个墙壁何时被打破? 播放器animation是否使用hitbox,或者是否使用时间来检测是否应该播放捣毁的animation?

将OpenSceneGraph从属于一个外部时基?

我正在使用OpenSceneGraphanimation,我希望animation中的事件与我的audio播放器(BASS或FMod)提供的时间参考同步。 是的,这是一个演示:)。 我哪个时间设置,在哪里? 同步比帧速率或连续性更重要 – 如果audio倒带,我也希望视觉倒带。 (支持GNU Rocket。) 我已经看了论坛post和谷歌的结果,但没有看到这个用例的明确答案。 帧标记具有帧号,日历时间,模拟时间和参考时间。 我认为模拟时间是我应该改变的 – 是这样吗? 是指定一个新的模拟时间作为参数frame()或advance()正确的方式来指定时间? 即使时间倒退,这样做还能工作吗?

无论如何,对象都以相同的比例收缩

我正在使用下面的代码收缩精灵: public bool shrinking = false; public float targetScale = 0.1f; public float shrinkSpeed = 0.1f; void Update () { if(shrinking) { mySprite.transform.localScale -= Vector3.one * Time.deltaTime * shrinkSpeed; if(mySprite.transform.localScale.x <= targetScale) { shrinking = false; } } } 然而,无论我改变shrinkSpeed ,对象的缩小率都是一样的。 我知道这可能与把它放在更新function有关,但我应该在哪里移动它来解决这个问题?

我如何准确地lerp色彩在几秒钟?

我有一些代码lerp两个颜色超过一定的秒数,和lerp工作正常: private Color lerpingColor; private IEnumerator LerpColorsOverTime(Color startingColor, Color endingColor, float time) { float step = 0.0f; while (step < 1.0f) { step += Time.deltaTime / time; yield return new WaitForSecondsRealtime(Time.deltaTime); lerpingColor = Color.Lerp(startingColor, endingColor, step); } } 问题是,这个时间比我在参数中提供的时间要长。 例如, LerpColorsOverTime(Color.white, Color.black, 5.0f); 花了8秒钟左右。 我最好的猜测是,我的方式非常低效。 我尝试了计算时间,但似乎没有工作。 在所示的特定情况下,这是因为calculationTime始终为0,因为在我的Time.time检查之间永远不会运行更新时间的代码。 我尝试了各种方法,这是我最好的: private Color lerpingColor; private IEnumerator LerpColorsOverTime(Color startingColor, […]

用户的input要延迟多久?

为了浏览网页,UX网站有一个很好的答案。 我的问题是关于游戏,而不是表格。 玩家角色应该按下button多长时间? 一方面,瞬间可以很好。 但是,这将如何影响视觉? 我希望对角色的行动有所准备。 例如,跳跃首先需要弯曲一些膝盖。 挥动一把剑,首先需要举起手中的剑。 忽视这些初步animation可能会感觉好一点,但可能看起来不太好。 那么这个制作animation应该不存在吗? 应该是100毫秒? 可以达到500毫秒吗? 另一方面,许多游戏增加了故意拖延以要求玩家计时。 Falcooooo拳击! 这不是我所要求的这个问题,但是我想我应该提一下。 因此,假设我们想要玩家获得即时结果,那么可以为初步animation指定多less时间? 100 ms是否也适用于游戏? 还是有一些其他的策略用来find一个好的甜蜜点? 并解决不可避免的“你必须玩testing!” 答案 – 绝对! 但是,什么是一个好的起点呢? 作为一名独立开发者,我无法在animation上迭代太多。

在瓷砖上创建更新“滴答”以模拟植物生长

在我的基于2D平台的平台游戏中,我添加了植物,使其能够像最简单的草地一样种植玉米等其他东西。 现在,每个这些特殊区域都必须更新,以显示它已经增长了多less(简单的状态如0 =新,1 =成熟,2 =开花) 我的问题是,最好的办法是什么? 到目前为止,我相信我可以: 每隔几秒更新一次瓦片,如果满足一个随机的机会,使其成长 每帧select一些瓦片来更新(我的世界是这样做的,基本上是三维的) ??? 现在更新的时间框架就像一朵花在每一个游戏的日子里(现实生活中有10分钟),草在每个游戏时间里都传播开来 感谢您的帮助,我想我可以做到这一点,如果其中任何一条是正确的道路,我只是想提一点建议。

游戏循环增量,分解执行时间?

在今天早上的思考中,我99.9%的时间,只看到一个主要的游戏循环,看起来像这样,就像增量传递到update()那样: while running getDeltaTime() … f(deltatime) — 现在我自问的问题是,如果在getDeltaTime()和f(deltaTime)之间,中间的代码花了1秒(大的值很容易)。 这意味着f(deltaTime)会移动任何物体的距离比它应该的距离less。 这当然可以通过在使用之前直接获取增量时间来解决。 这是否应该成为一个需要关注的因素?

为什么限制游戏循环增量时间?

我正在Github上阅读一些游戏的源代码,并首次看到这个游戏循环的实现: var lastTime = 0; var maxTime = 1/30; /** * @param {DOMHighResTimeStamp} curTime requestAnimationFrame provides this value automatically */ this.loop = function(curTime) { requestAnimationFrame(Game.loop); // Same as division by 1000 var dt = (curTime – lastTime) * 0.001; if(dt > maxTime) { dt = maxTime; } for(var i = 0, len = boards.length; i […]