# skript-particle
Skript 插件,用于以最小的麻烦创建复杂的粒子效果。
**需要 Skript 2.7+、Java 17+、Paper 1.18 - 1.20.4**
在 [releases 页面](https://github.com/sovdeeth/skript-particle/releases) 下载。
您可以在 [Issues 选项卡](https://github.com/sovdeeth/skript-particle/issues/new/choose) 或 [skript-chat discord](https://discord.gg/v9dXfENDnk) 上找到帮助、提供建议或提出抱怨。
Skript-Particle 的目标是提供创建粒子形状的语法。SkBee 等插件中存在功能强大且易于使用的粒子语法,但创建形状需要付出更多努力和专业知识。
它们固有的速度和性能也比 Java 慢,即使没有考虑到通常需要每次绘制时重新计算形状的需求。
Skript-Particle 的目标是提供易于使用、灵活且功能强大的语法来创建粒子形状。
基本结构是一组各种形状,例如圆形、线条、多边形等等。这些形状是相对于一个中心点定义的,并且没有在任何特定位置定位。
绘制语法接收一组形状和一个位置,并将所有形状相对于该位置绘制。
这允许定义一组只需要定义一次的形状,然后可以在许多地方和许多方向上绘制。
由于形状可以作为一个整体旋转,因此通过一行代码轻松更改形状的旋转和方向也是非常简单的。
### 语法可在 [skUnity](https://docs.skunity.com/syntax/search/addon:skript-particle) 和 [SkriptHub](http://skripthub.net/docs/?addon=Skript-Particle) 上找到
以下是示例代码:
```
command /magic:
trigger:
set {_shapes::outer-circle} to a circle of radius 2.225
set {_shapes::inner-circle} to a circle of radius 2
set {_shapes::tiny-circle} to a circle of radius 0.875
set {_shapes::triangle-1} to a triangle with radius 2
set {_shapes::triangle-2} to a triangle with radius 2
rotate shapes {_shapes::triangle-2} around y axis by 60 degrees
set particle of {_shapes::*} to electric spark
loop 200 times:
set {_view} to vector from yaw player's yaw and pitch player's pitch
set {_yaw} to yaw of {_view}
# 计算旋转形状所需的旋转量
set {_rotation} to rotation from vector(0, 1, 0) to {_view}
draw the shape {_shapes::*} at player's eye location ~ {_view}:
# 仅在本次绘制调用中发生,原始形状不会被修改
# 注意,这对于每个形状都会调用一次,因此是“drawn shape”,而不是“drawn shapes”
rotate drawn shape by {_rotation}
# 形状会采取最短路径旋转到所需的旋转,但是这会使其看起来在我们转身时旋转。
# 因此,我们将通过 yaw 轴旋转形状 -1 * {_yaw} 来纠正它。
rotate drawn shape around relative y axis by -1 * {_yaw}
wait 1 tick
```
## 当前功能:
- 形状:
- 贝塞尔曲线
- 圆形、椭圆形、球体和椭球体
- 圆柱体和椭圆柱体
- 弧线和球盖
- 螺旋线
- 线条
- 2D 正则和不规则多边形和棱柱体
- 正则多面体
- 矩形和长方体
- 绘制:
- 三种样式:轮廓、表面和填充。某些形状仅支持一种或两种样式。
- 任意方向的旋转。
- 缩放和平移。
- 一次性绘制多个形状。
- 谁能看到粒子的选项(特定于玩家)
- 每个形状的自定义粒子数据和密度
- 完全支持 SkBee 的粒子数据语法
- 用于清楚地可视化形状方向的调试轴。
- 只有当它们实际改变时,形状才会被计算出来,因此您可以在不产生任何性能损失的情况下多次绘制相同的形状。
- 选项使所有计算和绘制同步(默认情况下为异步)
- 能够在一段时间内持续绘制形状的能力(仅异步)
- 粒子:
- 自定义粒子的表达式
- 自定义粒子的部分
- 动画:
- 在自定义结构中设置预制动画,并使用一次绘制调用播放
## 计划中的功能:
- 形状:
- 由函数定义的自定义形状
- “常见但难以编码”的形状,例如心形、星星等等
- 绘制:
- 将形状组合成一个自定义形状,并将其作为一个单独的形状绘制。
- 具有自定义颜色节点的渐变颜色场。
- 动画:
- 设置预制动画的自定义结构,并使用一次绘制调用播放

https://user-images.githubusercontent.com/10354869/187062241-d3c51f86-4129-4f8b-9ce3-2d0037779e4e.mp4