/particle: delta กับ speed จริง ๆ แล้วหมายถึงอะไร และเทคนิค count=0
ตัวเลขสี่ตัวหลังตำแหน่งไม่ใช่ทิศทาง นี่คือสิ่งที่ delta และ speed ทำ ทำไม count=0 ถึงทำงานต่างออกไปโดยสิ้นเชิง และวิธีเล็งอนุภาค
/particle flame ~ ~1 ~ 0.5 0.5 0.5 0.01 20
└─ delta ─┘ spd count
ตัวเลขสี่ตัวนั้นคือส่วนที่ถูกอ่านผิดมากที่สุดของคำสั่งนี้
delta คือการกระจาย ไม่ใช่ทิศทาง
dx dy dz อธิบาย การกระจายแบบเกาส์เซียน (Gaussian spread) รอบตำแหน่ง — ว่าอนุภาคกระจัดกระจายไปไกลแค่ไหนในแต่ละแกน 0.5 0.5 0.5 ให้ลูกบอลฟุ้ง ๆ ส่วน 2 0 0 ให้เส้นตรงตามแนวแกน X
มันไม่ใช่เวกเตอร์ความเร็ว ค่าบวกและค่าลบไม่มีความแตกต่าง -2 0 0 และ 2 0 0 ให้เส้นเดียวกัน
ยกเว้นเมื่อ count เป็น 0
ตั้ง count เป็น 0 แล้วความหมายของทุกตัวเลขที่อยู่ข้างหน้าจะเปลี่ยนไป:
| count | delta หมายถึง | speed หมายถึง |
|---|---|---|
| ≥ 1 | การกระจายแบบสุ่ม | ขนาดความเร็วแบบสุ่ม |
| 0 | เวกเตอร์ทิศทาง | ความเร็วตามแนวเวกเตอร์นั้น |
/particle flame ~ ~1 ~ 0 1 0 0.5 0 → one particle shot straight up at 0.5
นี่เป็นวิธีเดียวที่จะเล็งอนุภาคได้ ทุกคำตอบของคำถาม "ทำลำแสงยังไง" สุดท้ายก็มาจบที่ตรงนี้ ข้อเสียคือใช้หนึ่งอนุภาคต่อหนึ่งคำสั่ง ลำแสงจึงต้องใช้ลูปหรือเชนคำสั่ง
speed ไม่ใช่ความเร็วเสมอไป
สำหรับอนุภาคส่วนใหญ่ speed เป็นตัวคูณความเร็ว แต่สำหรับบางชนิดมันถูกใช้ผิดวัตถุประสงค์ไปเลย:
dust— ขนาดเป็นพารามิเตอร์ และ speed ไม่มีผลอะไรnote— ความเร็วแกน x ใช้เลือกสี: เมื่อcount 0มันคือ delta แกน x คูณกับspeedและ0ถึง1จะวนรอบวงล้อสีหนึ่งรอบ (กล่องตัวโน้ตส่งค่า pitch ÷ 24) ถ้า count สูงกว่านั้นสีจะเป็นแบบสุ่มentity_effect— สีถูกดึงมาจากอาร์กิวเมนต์ alpha-RGB
ดังนั้น /particle note ~ ~1 ~ 0.5 0 0 1 0 ไม่ใช่อนุภาคที่เร็ว — 0.5 กับ speed 1 รวมกันต่างหากที่ทำให้มันเป็นสีอื่น
อนุภาคที่มีอาร์กิวเมนต์ของตัวเอง
/particle dust{color:[1.0,0.0,0.0],scale:1} ~ ~ ~ 0 0 0 0 1
/particle block{block_state:"minecraft:stone"} ~ ~ ~ 0.3 0.3 0.3 0 10
/particle dust_color_transition{from_color:[1,0,0],to_color:[0,0,1],scale:1} ~ ~ ~ 0 0 0 0 1
บล็อกอาร์กิวเมนต์ต้องวางต่อท้ายชื่ออนุภาคทันที ก่อนพิกัด การวางไว้ท้ายสุดคือสาเหตุทั่วไปของ syntax error
force กับผู้ชม
คำสั่งลงท้ายด้วยโหมดและผู้เล่นซึ่งเป็นทางเลือก:
/particle flame ~ ~ ~ 0 0 0 0 1 force @a
normal จะเคารพการตั้งค่าอนุภาคของแต่ละไคลเอนต์และขีดจำกัดการมองเห็น 32 บล็อก ส่วน force จะแสดงอนุภาคเสมอและไกลถึง 512 บล็อก สำหรับอะไรก็ตามที่ผู้เล่นต้องเห็น — สัญญาณเตือนบอส, หมุดเควส — จำเป็นต้องใช้ force และนี่คือเหตุผลที่อนุภาคของคุณแสดงให้คุณเห็นแต่ไม่แสดงให้คนที่ตั้งค่าอนุภาคลดลงเห็น
ประสิทธิภาพ
อนุภาคเป็นการเรนเดอร์ฝั่งไคลเอนต์ ภาระจึงตกอยู่ที่ผู้เล่น ไม่ใช่เซิร์ฟเวอร์ count ที่ 200 ต่อ tick ต่อผู้เล่นจะทำให้เฟรมเรตตกบนเครื่องสเปกปานกลาง แม้ว่า TPS ของเซิร์ฟเวอร์จะไม่กระทบก็ตาม ควรกระจายการปล่อยอนุภาคไปตาม tick ต่าง ๆ แทนที่จะยิง count ก้อนใหญ่ครั้งเดียว
ดูอนุภาคทุกชนิดและ sound id กว่า 1,900 รายการพร้อมคำสั่งสำเร็จรูปได้ที่ แกลเลอรีอนุภาคและเสียง