最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

冰與火之舞(adofai)判定公式

2022-06-05 11:36 作者:QuitSense  | 我要投稿

公式

提前 = ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ -(Max(60.0, Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


太快 = -(Max(60.0, Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm)) < ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ -(Max(45.0, Max(0.03/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


稍快 = -(Max(45.0, Max(0.03f/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm)) < ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ -(Max(30.0, Max(0.02/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


完美 = -(Max(30.0, Max(0.02f/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm)) < ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ (Max(30.0, Max(0.02/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


稍慢 = (Max(30.0, Max(0.02f/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm)) < ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ (Max(45.0, Max(0.03/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


太慢 = (Max(45.0, Max(0.03f/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm)) < ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) ≤ (Max(60.0, Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))


失敗 = ((打擊角度 - 參考角度) * ±1(是否旋轉(zhuǎn)) * 180.0 / π) > (Max(60.0, Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025) * 音高 * 180 / 60.0 * bpm))?

解釋:

打擊角度-參考角度:玩家操作的球和目標磚塊之間的角度差(弧度制)

±1(是否旋轉(zhuǎn)):如果這個磚塊有旋轉(zhuǎn)事件則*-1,否則*1

* 180.0 / π:把弧度制轉(zhuǎn)為角度制

Max(a,b):取a,b中較大的一個

默認難度初始判定區(qū)間:寬判:0.091;標判:0.065;嚴判:0.04

飚速模式倍數(shù):默認為1.0,如2.8倍此值就是2.8

/?60.0 * bpm:把beats/min(每分鐘節(jié)拍數(shù))轉(zhuǎn)為beats/sec(每秒鐘節(jié)拍數(shù))
音高默認=1

上述的bpm為等效bpm,也就是當前磚塊bpm*飆速倍數(shù)

相關源代碼(注釋為自己寫的)

public static HitMargin GetHitMargin(float hitangle, float refangle, bool isCW, float bpmTimesSpeed, float conductorPitch)
	{
		float num = (hitangle - refangle) * (float)(isCW ? 1 : -1);
		HitMargin result = HitMargin.TooEarly;
		float num2 = num;
		num2 = 57.29578f * num2;
		double adjustedAngleBoundaryInDeg = scrMisc.GetAdjustedAngleBoundaryInDeg(HitMarginGeneral.Counted, (double)bpmTimesSpeed, (double)conductorPitch);
		double adjustedAngleBoundaryInDeg2 = scrMisc.GetAdjustedAngleBoundaryInDeg(HitMarginGeneral.Perfect, (double)bpmTimesSpeed, (double)conductorPitch);
		double adjustedAngleBoundaryInDeg3 = scrMisc.GetAdjustedAngleBoundaryInDeg(HitMarginGeneral.Pure, (double)bpmTimesSpeed, (double)conductorPitch);
 ? ? ? ?/*
 ? ? ? ?adjustedAngleBoundaryInDeg = Math.Max(60.0, Mathf.Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?adjustedAngleBoundaryInDeg2 = Math.Max(45.0, Mathf.Max(0.03f/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?adjustedAngleBoundaryInDeg3 = Math.Max(30.0, Mathf.Max(0.02f/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?*/
		if ((double)num2 > -adjustedAngleBoundaryInDeg)
		{
			result = HitMargin.VeryEarly;
		}
		if ((double)num2 > -adjustedAngleBoundaryInDeg2)
		{
			result = HitMargin.EarlyPerfect;
		}
		if ((double)num2 > -adjustedAngleBoundaryInDeg3)
		{
			result = HitMargin.Perfect;
		}
		if ((double)num2 > adjustedAngleBoundaryInDeg3)
		{
			result = HitMargin.LatePerfect;
		}
		if ((double)num2 > adjustedAngleBoundaryInDeg2)
		{
			result = HitMargin.VeryLate;
		}
		if ((double)num2 > adjustedAngleBoundaryInDeg)
		{
			result = HitMargin.TooLate;
		}
		return result;
	}





public static double GetAdjustedAngleBoundaryInDeg(HitMarginGeneral marginType, double bpmTimesSpeed, double conductorPitch)
	{
		float num = 0.065f;
		if (GCS.difficulty == Difficulty.Lenient)
		{
			num = 0.091f;
		}
		if (GCS.difficulty == Difficulty.Normal)
		{
			num = 0.065f;
		}
		if (GCS.difficulty == Difficulty.Strict)
		{
			num = 0.04f;
		}
		bool isMobile = ADOBase.isMobile;
		num = (isMobile ? 0.09f : (num / GCS.currentSpeedTrial));
		float num2 = isMobile ? 0.07f : (0.03f / GCS.currentSpeedTrial);
		float a = isMobile ? 0.05f : (0.02f / GCS.currentSpeedTrial);
 ? ? ? ?//num(最寬松,可能為太快太慢)=默認難度初始判定區(qū)間/GCS.currentSpeedTrial
 ? ? ? ?//num2(可能為稍快稍慢)=0.03f/GCS.currentSpeedTrial
 ? ? ? ?//a(可能為完美)=0.02f/GCS.currentSpeedTrial
 ? ? ? ?//currentSpeedTrial應該是飚速模式

		num = Mathf.Max(num, 0.025f);
 ? ? ? ?//避免過低bpm導致反向高bpm補償
		num2 = Mathf.Max(num2, 0.025f);
 ? ? ? ?//避免過低bpm導致反向高bpm補償
		double num3 = (double)Mathf.Max(a, 0.025f);
 ? ? ? ?//避免過低bpm導致反向高bpm補償

 ? ? ? ?/*
		num = Mathf.Max(默認難度初始判定區(qū)間/GCS.currentSpeedTrial, 0.025f);
		num2 = Mathf.Max(0.03f/GCS.currentSpeedTrial, 0.025f);
		num3 = Mathf.Max(0.02f/GCS.currentSpeedTrial, 0.025f);
 ? ? ? ?float double 亂用是吧
 ? ? ? ?*/

		double val = scrMisc.TimeToAngleInRad((double)num, bpmTimesSpeed, conductorPitch, false) * 57.295780181884766;//180/π=57.29
		double val2 = scrMisc.TimeToAngleInRad((double)num2, bpmTimesSpeed, conductorPitch, false) * 57.295780181884766;
		double val3 = scrMisc.TimeToAngleInRad(num3, bpmTimesSpeed, conductorPitch, false) * 57.295780181884766;
 ? ? ? ?/*
 ? ? ? ?val=Mathf.Max(默認難度初始判定區(qū)間/GCS.currentSpeedTrial, 0.025f) * conductorPitch * π / 60.0 * bpmTimesSpeed
 ? ? ? ?val2=Mathf.Max(0.03f/GCS.currentSpeedTrial, 0.025f) * conductorPitch * π / 60.0 * bpmTimesSpeed
 ? ? ? ?val3=Mathf.Max(0.02f/GCS.currentSpeedTrial, 0.025f) * conductorPitch * π / 60.0 * bpmTimesSpeed

 ? ? ? ?*/
		double result = Math.Max((double)GCS.HITMARGIN_COUNTED, val);
 ? ? ? ?//GCS.HITMARGIN_COUNTED被賦值的三個函數(shù)最終都未被使用,因此取初始值60f
		double result2 = Math.Max(45.0, val2);
		double result3 = Math.Max(30.0, val3);
 ? ? ? ?/*
 ? ? ? ?result = Math.Max(60.0, Mathf.Max(默認難度初始判定區(qū)間/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?result2 = Math.Max(45.0, Mathf.Max(0.03f/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?result3 = Math.Max(30.0, Mathf.Max(0.02f/飚速模式倍數(shù), 0.025f) * 音高 * π / 60.0 * bpm);
 ? ? ? ?這123的 起變量名不要num1 val2 result3!!血壓已經(jīng)起來了
 ? ? ? ?*/
		if (marginType == HitMarginGeneral.Counted)
		{
			return result;
		}
		if (marginType == HitMarginGeneral.Perfect)
		{
			return result2;
		}
		if (marginType == HitMarginGeneral.Pure)
		{
			return result3;
		}
		return result;
	}

	public static double TimeToAngleInRad(double timeinAbsoluteSpace, double bpmTimesSpeed, double conductorPitch, bool shrinkMarginsForHigherPitch = false)
	{
		double num;
		/*if (shrinkMarginsForHigherPitch)
		{
			num = timeinAbsoluteSpace;
		}
		else
		{*/
			num = timeinAbsoluteSpace * conductorPitch;
		//}
		return num * 3.1415927410125732 / scrMisc.bpm2crotchet(bpmTimesSpeed);
 ? ? ? ?//num = timeinAbsoluteSpace * conductorPitch * π / 60.0 * bpmTimesSpeed
	}

	public static double bpm2crotchet(double bpm)
	{
		return 60.0 / bpm;
	}




冰與火之舞(adofai)判定公式的評論 (共 條)

分享到微博請遵守國家法律
宜兰县| 集安市| 余姚市| 蓬溪县| 康乐县| 班玛县| 阿克陶县| 泽库县| 阿克苏市| 禹州市| 区。| 南木林县| 金川县| 玉林市| 普宁市| 乌审旗| 湛江市| 商都县| 丁青县| 巴楚县| 增城市| 松桃| 绍兴市| 塔城市| 平江县| 龙门县| 万年县| 米泉市| 昆山市| 双辽市| 苏州市| 金坛市| 阿克苏市| 兴业县| 湖南省| 天全县| 嘉黎县| 沁水县| 都匀市| 綦江县| 衡东县|