我的问题是:我的游戏日应该是真实世界日的1/6。一个游戏日有12个游戏小时。因此,一个游戏小时是20分钟的实时时间。或者这就是它应该是的样子。然而,当我观察到时间时,一个小时不是20分钟,实际上是30分钟。我不知道是什么导致了这一切。我的函数有什么问题?
public function getGameTime() {
$t = time();
$d = $t/60/60/6 - 68646;//the number taken off makes the current time day 200 instead of a really big number
$fraction = $d - floor($d);
if ($fraction<(1/12)) $hour = 0;
else if ($fraction<(1/12)*2) $hour = 1;
else if ($fraction<(1/12)*3) $hour = 2;
else if ($fraction<(1/12)*4) $hour = 3;
else if ($fraction<(1/12)*5) $hour = 4;
else if ($fraction<(1/12)*6) $hour = 5;
else if ($fraction<(1/12)*7) $hour = 6;
else if ($fraction<(1/12)*8) $hour = 7;
else if ($fraction<(1/12)*9) $hour = 8;
else if ($fraction<(1/12)*10) $hour = 9;
else if ($fraction<(1/12)*11) $hour = 10;
else $hour = 11;
for ($minute = 59; $minute>=0; $minute--) {
if ((($hour*60+$minute)/720)<$fraction) {
$min = $minute;
break;
}
}
return array(
"day" => floor($d),
"hour" => $hour,
"minute" => $min
);
}发布于 2017-02-15 00:20:34
所以,是的,如果我想在一天中有6个4小时的时段,我需要除以4。除以6会得到4个6小时的时段。因为除数是游戏日中的实际生活小时数,而不是24小时内的游戏天数。问题解决了。
https://stackoverflow.com/questions/42229829
复制相似问题