Я дурачок по поводу пвп системы

Крч, какое отталкивание по x, z, y, и задержка между ударами нужно, для идеальных условий “спортивного” пвп?

x: 0.3 - 0.5
y: 0.25 - 0.45
z: 0.3 - 0.5

30 - 60 MS по задержке (эт на джаве для бедрока вообще по моему мнению не нужна задержка)

Сейчас метод кнокбэка примерно такой:

<?php

public function knockBack(float $x, float $z, float $force = self::DEFAULT_KNOCKBACK_FORCE, ?float $verticalLimit = self::DEFAULT_KNOCKBACK_VERTICAL_LIMIT): void
{
	$f = sqrt($x * $x + $z * $z);
	if ($f <= 0) {
		return;
	}

	// if(mt_rand() / mt_getrandmax() > $this->knockbackResistanceAttr->getValue()){
	// 	$f = 1 / $f;

	// 	$motionX = $this->motion->x / 2;
	// 	$motionY = $this->motion->y / 2;
	// 	$motionZ = $this->motion->z / 2;
	// 	$motionX += $x * $f * $force;
	// 	$motionY += $force;
	// 	$motionZ += $z * $f * $force;

	// 	$verticalLimit ??= $force;
	// 	if($motionY > $verticalLimit){
	// 		$motionY = $verticalLimit;
	// 	}

	// 	$this->setMotion(new Vector3($motionX, $motionY, $motionZ));
	// }

	if (mt_rand() / mt_getrandmax() > $this->knockbackResistanceAttr->getValue()) {
		$f = 1 / $f;
		$motion = new Vector3($this->motion->x, $this->motion->y, $this->motion->z);

		$base = 0.3; // Откидывание по X и Z
		$base_y = 0.3; // Откидывание по Y

		$motion->x /= 2;
		$motion->y /= 2;
		$motion->z /= 2;
		$motion->x += $x * $f * $base;
		$motion->y += $base_y;
		$motion->z += $z * $f * $base;

		if ($motion->y > $base_y) {
			$motion->y = $base_y;
		}

		$this->setMotion($motion);
	}
}

// $this->attackTime = 5;

Но всё равно, будто не то, не так как в тиктоке

в спортивном пвп влияют также тайминги и резкость

Поэтому я и пытаюсь создать идеальные условия, чтобы при ударе цель не улетал, но в тоже время отталкивался (я перфекционист)

попробуй

$this->isOnGround() ? 0.42 : 0.25;

хз что еще можно предлодить

Ну попробуем

Костыли, но ± желаемый результат я получил (всё равно не идеальный)

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.