Articles of 计时器

火灾延迟计时器

我现在有一个可以发射炮弹的炮塔。 我可以控制两次拍摄之间的延迟(fireDelay),并且我可以控制重新装入枪的弹匣(reloadDelay)所需的时间。 我做了一个简单的解决scheme,当用户试图开火时,看看自他上次开火以来已经过了多长时间,如果已经足够长的话,它会再次开火。 和reloadDelay一样。 但是现在我想这样做,点击火一次就会发射3发子弹,之间有一段时间,类似于M-16上的突发射击模式,就像FPStypes。 简要概述现在发生的事情: 用户点击鼠标。 程序进入消防function()。 如果足够的时间已经过去了,弹射子弹,并留下足够的弹药。 退出该function,只有当您尝试再次触发时才会再次进入。 那么如何在未来的第一步再次发生火灾呢? 我有一个内置在引擎中的消息系统,所以我现在的解决scheme是让枪发射一颗子弹,然后在消息列表中添加2条消息,附加消息延迟,消息管理器将消息发送给消息时间已过期时触发。 我不喜欢这个,因为我认为这个枪不应该在未来发出自己的消息来开火,这不是消息系统最初的意思,尽管它确实有效。 我只是想知道是否有更好的解决scheme来实现这个?

光滑和计时器?

我正在制作一个需要事件发生的游戏。 说明:我希望事件A发生在12000ms,事件B每10000ms发生一次。 所以“如果”应该是这样的。 //event A if(Ticks == 12000) //do things //even B if(Ticks % 10000 == 0) //do stuff 但现在我怎么能有这个“蜱”价值? 我试图声明一个int,然后在update方法中增加它,我尝试了两种增加它的方法: Ticks++; 它不起作用,因为更新方法并不总是每微秒调用一次。 Ticks += delta; 这有点不错,但三角洲并不总是等于1,所以我可以错过我在if语句中需要的确切数值 所以如果你知道我怎么能在一个精确的时间内完成事件,请告诉我怎么做到这一点

如何做一个等待计时器?

我正在制作一个采矿风格的游戏,并且正在寻找能够影响你挖掘块的速度的variables。 这是我目前得到的想法,但它不会等待计时器在挖掘之前完成,有没有人有更好的方法来做到这一点? if (MinePlayerCollision() && newState.IsKeyDown(Keys.D)) { MiningElapsed = (float) gameTime.TotalGameTime.Seconds; if (MiningEff <= MiningElapsed) { BlockMined = true; MineReset = false; MiningElapsed = 0; } }

如何计算基于经过时间的分数algorithm?

我试图根据经过的时间来计算一个alogirthm来计算基于音乐节拍的分数。 我把音乐节拍分成4份,因为那是节拍的时间尺度。 所以,如果用户在第三拍时按下正确的键,这当然是完美的拍子,我希望它获得最好的成绩。 我试过这样做: score=percent(bpmt.elapsed,bpm/3); int scoref(int int1,int int2) { return int1*100/int2; } bpmt.elapsed从该节拍的开始到用户按下该键的时间之间bpmt.elapsed了多less时间,bpm是该特定节拍的总毫秒数。 谁能告诉我一个更好的方法来做到这一点? 我认为这需要更高级的math,这是超越我的。

有时增加实例化对象的速度

这可能看起来类似于“每隔N秒后增加速度”types的问题,但它不同,因为对象被实例化并被破坏。 在我的start()方法中,我使用InvokeRepeating方法在特定时间间隔后调用一个名为CreateObstacle()方法: InvokeRepeating("CreateObstacle", 1, 3f); 对于那些不了解InvokeRepeating方法的参数的InvokeRepeating 。 第一个是您想调用的方法名称。 第二个是延迟这些重复呼叫的秒数。 第三个参数是方法调用之间的秒数。 在update()方法中,我只是将时间每秒存储在一个浮点数translation : translation = Time.time; 然后最后在CreateObstacle()方法中,我检查if秒数小于10,则Instantiate ((rocks), new Vector3 (11, -3, 0), Quaternion.identity); 否则, if秒大于10做相同的Instantiate ((rocks), new Vector3 (11, -3, 0), Quaternion.identity); 但速度更快。 那么,如何在一定的时间间隔(例如10秒)之后,增加正在实例化的对象的速度。 在哪种方法中,我应该调用InvokeRepeating来降低速度? 但速度更快说明: 岩石在屏幕上从右向左移动。 每3秒钟出现一个新的岩石,从右向左移动并被破坏。 所以我想要的是在10秒后左右运动的速度增加。

使用定时器的AS3随机事件

我在大学做一个作业的游戏。 我正在制作的游戏需要在房子周围随机使用家用电器,以便随时“打开”。 玩家必须绕着房子跑来跑去。 我对这个游戏的其他代码有信心,但随机打开是我不确定的。 我想这个解决scheme是使用所有我的设备推入到一个数组,然后创建一个计时器事件。 从这个定时器中随机抽取一个时间,然后随机select一个电器。 然后将显示animation上的装置,直到玩家点击它将其closures。 唯一的问题是我不知道如何开始这个。 另外值得一提的是,我只能在这个项目中使用flashdevelop和AS3,所以没有Adobe Flash。 提前致谢, Job4aCowboy

什么是多人游戏的好时钟实现?

在玩家需要发送时间进行游戏状态同步的情况下,是否每个人都可以发出默认的时间戳实现,或者是否应该使用NTP? http://en.wikipedia.org/wiki/Network_Time_Protocol

运动不规则

所以,我试图在C#XNA中编写一些代码,让敌人随机移动0.5秒,然后切换方向,再移动0.5秒。 但是我发现的问题是,我这样做的时候,运动就会变得波涛汹涌,而不是从Y1平滑过渡到Y2,敌人就在那里“跳跃”。 运动的代码是: public static void enemy_movement() { int direction; for (int i = 0; i < enemy1_pos.Count; i++) { direction = rand.Next(4); //The enemy's movement direction Vector2 v = enemy1_pos[i]; if (direction == 0) //Down { vY += enemy1_speed; } else if (direction == 1) //Up { vY -= enemy1_speed; } else if (direction […]

定时器在XNA中popup文本

我正在制作一款包含回合制RPG战斗元素的XNA游戏。 任何具有回合制战斗的好游戏都必须向用户提供良好的反馈。 例如,当我的家伙攻击时,应该有一个文本popup窗口,说“HERO 15 DMG!”。 而这段文字应该会在几秒钟后消失。 我目前能够通过标准spritefont绘图在屏幕上的文字。 但是,为了使它消失,我目前正在使用bools和一个计时器。 我一直在研究时间相关的东西,但我似乎是非常糟糕的。 根据我收到的一些建议,我做了一个消息系统课。 但是我仍然对实现感到困惑。 这是新的代码: public class MessageSystem { public static readonly MessageSystem Instance = new MessageSystem(); public float timenow; struct Message { public SpriteFont Font; public string Data; public Vector2 Position; public float Duration; public bool isActive { get; set; } } List<Message> Messages = new List<Message>(); […]

定期更新Unity中的对象

我正在试图让对撞机每1秒出现一次。 但是我无法得到正确的代码。 我试图启用更新function的对撞机,并把收益,使其更新每一秒左右。 但它不工作(它给了我一个错误: 更新()不能是一个协程。 ) 我将如何解决这个问题? 我需要一个计时器系统来切换对撞机吗? var waitTime : float = 1; var trigger : boolean = false; function Update () { if(!trigger){ collider.enabled = false; yield WaitForSeconds(waitTime); } if(trigger){ collider.enabled = true; yield WaitForSeconds(waitTime); } } }