如何在 C# XNA 中创建 Wait() 方法
本文关键字:Wait 方法 创建 XNA | 更新日期: 2023-09-27 18:31:56
我正在尝试在游戏中添加"吸引"模式,为此我需要告诉角色在移动之前等待(这样我就可以在屏幕上显示文本)。我决定制作一个 Wait 方法,我可以在其中发送以下参数。
public bool Wait(int waitTime, GameTime gameTime)
{
// Wait Code
}
该代码将存储调用它的时间,等待指定的时间(以毫秒为单位),然后在时间过去时返回 true。
但是,我不确定如何使游戏时间仅在第一次调用 Wait 时存储(或者布尔值永远不会标记为 true)。我以为我可以制作内部布尔值来处理标记,但我不确定如何以动态/可重用的方式对其进行编程?
非常感谢任何帮助,并对论文感到抱歉! <3
我已经解决了类似的问题。这是代码片段:
private static readonly TimeSpan intervalBetweenAttack1 = TimeSpan.FromMilliseconds(3000);
private TimeSpan lastTimeAttack;
和可更新对象的 Update() 内部
public override void Update(GameTime gameTime)
{
// If enough time has passed attack
if (lastTimeAttack + intervalBetweenAttack < gameTime.TotalGameTime)
{
Attack();
lastTimeAttack = gameTime.TotalGameTime;
}
}
这是AI的简化代码。它每 3 秒攻击一次。如果你只想攻击一个,你可以添加布尔哈斯攻击=假;然后只需在 Update() 中检查它
您可以创建一个计时器类。你会在哪里做类似的事情定时器 t = 新定时器(3000f);取一个值来表示计时器运行的时间
触发器:
t.Start();
更新方法:
if(!t.IsActive)
{
//Player updates here
}
else
t.Update(gameTime);
等待方法:
public void Wait()
{
if(t.IsActive)//set by the .start method
{
if(t.isComplete)
{
//do some stuff
t.Stop();
}
else
{
//we're still timing, nothing to do here
}
}
}
这是非常粗糙的,由记忆编写,所以不完全确定是否会帮助你。
因此,在计时器类中,它在更新期间递增,如果跟踪浮点数(例如当前时间 += gameTime.elapsedgametime.毫秒)大于存储的总时间,则将计时器标记为 IsComplete = true,然后当这是真的时停止计时器运行。
因此,每当计时器运行时,都不会发生移动
看看 Thread.Sleep, MSDN