CSPのトレイルをskriptで作りたい

CS,CSPをskriptで再現したいのですが、CSPのtrailは「~ブロックごと」というのがあります。 矢をかなりの速度で飛ばすため、Skriptの「1tickごと」だとかなりの間隔が空いてしまいます。 これを解決できるサンプルコード、もしくは「~m動いた」などを検知する方法は、ありますでしょうか? バージョンは1.16.5,1.15.2のどちらかでお願いします。
17 Replies
月猫ch
月猫ch2y ago
Ver1.12.2に生息しているものです 雪玉発射を検知し、発射した時から while projectile alive: で、毎tick 雪玉のvelocityを取得 取得したvelocityから指定の長さのvector(ここの長さが trailの間隔)を作成し、雪玉のlocationからvectorずつ伸ばして その場所にエフェクト表示 で実装してます Verは違いますが 基礎構造は似た感じでできるのでは ※書いてて思ったのですが、vectorの長さをx(-1)して trailを描画する方向を後ろにしたら、ビジュアル的にも正しい表示になると思います
chazfoz
chazfozOP2y ago
雪玉とかの発射物は飛ぶ方向と視点(F3+Bの青い線)との方向が違うんですよね… 青い線に沿ってパーティクルが出るので難しいと思います
unnnnnnnnnnn
unnnnnnnnnnn2y ago
雪玉を起点にするとのことなので問題ないかと
chazfoz
chazfozOP2y ago
なるほどです、勘違い申し訳ないです
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
これに関しては、一定速度以上の雪玉等の描画がバグるだけで、内部処理的には問題ないです なので仮に飛んでいる雪玉の位置にパーティクルを表示した場合、正しく表示されます あ何でもなかった
chazfoz
chazfozOP2y ago
プレイヤーの視点ではなく、雪玉の視点(F3+Bの雪玉から出ている青い線)です。わかりにくかったですね… 玉が矢だともっと玉の視点が複雑化します
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
ところで問題の解決方法ですが、1tick毎に座標取得をするのは変えずに 取得するたびに前回取得した座標との間のブロックをloopし、そこに描画するのはどうでしょう
chazfoz
chazfozOP2y ago
ブロックの中心に描画されてしまいませんか?
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
なるほど じゃあ前回の雪玉の座標から取得した雪玉の座標までのベクトル取るほうがいいのか
chazfoz
chazfozOP2y ago
chazfoz
chazfozOP2y ago
1は座標一個めで2は座標二個めです この赤い線をピンポイントでループできれば取れると思いますが… この1→2のベクトルはどのように取得するんです?
何か
何か2y ago
そもそもminecraftそのものが1tick毎にゲームの状態を更新してます
何か
何か2y ago
1 tick毎に物体の速度を計算して次の座標を出して前の座標との間をレイトレースして障害物判定をします
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
vector from (元の座標) to (行先の座標)
何か
何か2y ago
そもそもこれは全ゲーム共通です🙄 更新の頻度はゲームによるけど skriptの1tickは遅すぎるわけでも速すぎるわけでもなく every 1 tickっていうのはマイクラのupdateすべてにおいて処理をするってことになるので まったく問題ありません
chazfoz
chazfozOP2y ago
説明ありがとうございます。あまりマイクラのシステム的な仕様自体も理解が追いついてない状況なので助かります.
Want results from more Discord servers?
Add your server