我正在实现基于转向的游戏,有两侧和每侧有几个单位,在每个特定时刻只有一个单元可以穿过电路板。

因为只有一个单位一次可以移动,在我弄清楚它应该去的地方之后,就模拟而言,它可以立即传送在那里,但是玩游戏你想要看到单位移动这样的机组你意识到谁搬家了,他去了。

问题是,在模型中将移动算法(例如在n秒内插入2点之间),然后在不知道它正在移动的情况下,视图显示在内插位置中的单元,或者传送单位并通知视图,它应该以其最佳方式显示单位移动。

如果您将采取第二种方法,您将如何保持模拟太远的视图,您是否会在移动结束后恢复模拟的命令?

提前感谢,Xtapodi。

有帮助吗?

解决方案

啊,又一个例子,提醒我们MVC从未最初设计用于实时图形。;)

我会在模型中存储当前位置和先前位置。当对象移动时,将当前位置复制到先前位置,将新位置复制到当前位置,并将通知发送到模型改变的视图。然后,视图可以相应地在旧位置和新位置之间插入。它可以加速,慢向下,甚至完全根据特定视图设置删除插值,而无需任何要在模型内存储的额外数据。

而不是存储当前位置和先前的位置,而是可以使用每个单元存储最后一个移动,并且移动本身包含先前的位置。如果您需要存储有关移动的额外信息,这可能更通用。

其他提示

您可能想要的是使单位图像移动每个帧。移动图像每帧的移动与插值类似。

oonspersecond= totnoteUnit /(framespersecond * totalseConds)

因此,如果我想在2秒内将图像从位置0移动到位置60,我需要在30帧中移动60个单元,因此我的速度为1.所以每帧,我移动图像1单位,如果移动设备将带我超越目的地,只需将我的位置设置为目的地。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top