Крч, какое отталкивание по 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 часов после последнего ответа. В ней больше нельзя отвечать.