Skip to content

Instantly share code, notes, and snippets.

@PJZ9n
Created May 3, 2020 18:59
Show Gist options
  • Save PJZ9n/cbe8f5fb99af6cb368586ad92ebc891d to your computer and use it in GitHub Desktop.
Save PJZ9n/cbe8f5fb99af6cb368586ad92ebc891d to your computer and use it in GitHub Desktop.
<?php
/**
* @name Particle
* @version 1.0.0
* @main PJZ9n\Particle\Main
* @api 3.0.0
*/
declare(strict_types=1);
namespace PJZ9n\Particle;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\level\particle\DustParticle;
use pocketmine\level\particle\HeartParticle;
use pocketmine\math\Vector3;
use pocketmine\plugin\PluginBase;
class Main extends PluginBase implements Listener
{
/** @var int Tick */
private $last;
public function onEnable(): void
{
$this->last = $this->getServer()->getTick();
$this->getServer()->getPluginManager()->registerEvents($this, $this);
}
public function onPlayerMove(PlayerMoveEvent $event): void
{
if ($this->getServer()->getTick() - $this->last > 20) {
$this->last = $this->getServer()->getTick();
$player = $event->getPlayer();
$level = $player->getLevel();
//$levelはLevel(ワールド)オブジェクトとし、$playerはプレイヤーオブジェクトとします
$x = $player->x;
$y = $player->y;
$z = $player->z;
$center = new Vector3($x, $y, $z); //プレイヤーの座標 ($player->asVector3() でもよい)
$radius = 0.5;
$count = 100;
//$particle = new DustParticle($center, mt_rand(), mt_rand(), mt_rand(), mt_rand()); //ランダムな色を発生
$particle = new HeartParticle($center);
for ($yaw = 0, $y = $center->y; $y < $center->y + 4; $yaw += (M_PI * 2) / 20, $y += 1 / 20) {
$x = -sin($yaw) + $center->x;
$z = cos($yaw) + $center->z;
$particle->setComponents($x, $y, $z);
$level->addParticle($particle); //パーティクル発生
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment