Modding:Simple Particles/ru: Difference between revisions

From Vintage Story Wiki
(Created page with "Итак, давайте создадим несколько базовых частиц. Я предлагаю создать статическое поле для ваши...")
(Created page with "Это свойство полезно для частиц в воде, которые должны исчезнуть, достигнув поверхности (умерет...")
 
(43 intermediate revisions by the same user not shown)
Line 10: Line 10:
</syntaxhighlight>
</syntaxhighlight>


Now we have the property, the only thing left to do is to set the position and spawn the particles into the world. I'm gonna use the <code>OnHeldInteractStart</code> and *Step method inside a custom made Item class (you can read more about this in the [[Collectible|Collectibles Tutorial]]):
Теперь у нас есть свойство, осталось только установить положение и создать частицы в мире. Я буду использовать метод <code>OnHeldInteractStart</code> и *Step внутри пользовательского класса Item (подробнее об этом можно прочитать в [[Collectible/ru|Collectibles Tutorial]]):
<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
         public override void OnHeldInteractStart(ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, ref EnumHandHandling handHandling)
         public override void OnHeldInteractStart(ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, ref EnumHandHandling handHandling)
Line 26: Line 26:
</syntaxhighlight>
</syntaxhighlight>


This will spawn some white cube particles right in front of the player, which simply fall to the ground.
Это создаст несколько белых кубических частиц прямо перед игроком, которые просто упадут на землю.


[[File:BasicParticles.png|300px]]
[[File:BasicParticles.png|300px]]


== Properties Overview ==
== Обзор свойств ==


There are several things you can configure. Here is an overview which covers all of the properties:
Есть несколько вещей, которые вы можете настроить. Вот обзор, который охватывает все свойства:


=== Position ===
=== Позиция ===


Basically there are two properties. One of them is the <code>minPos</code> property, which will determine the exact position where particles will spawn. <code>addPos</code> is relative to this position, once a particle will spawn it will be randomized and added to the particle's position. If <code>addPos</code> is not defined all particles will spawn at the exact some position.
В основном есть два свойства. Одним из них является свойство <code>minPos</code>, которое определяет точную позицию, в которой будут появляться частицы. <code>addPos</code> относится к этой позиции, как только частица появится, она будет рандомизирована и добавлена к позиции частицы. Если <code>addPos</code> не определен, все частицы будут появляться в определенной позиции.


Same position:
Та же позиция:


[[File:Particle (equal position).png|300px]]
[[File:Particle (equal position).png|300px]]


If we now set <code>addPos</code> ...
Если мы сейчас установим <code>addPos</code>...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 48: Line 48:
</syntaxhighlight>
</syntaxhighlight>


... particles will spawn in an 0.area:
... частицы будут появляться в области 0,5³:


[[File:Particle (differnt position).png|300px]]
[[File:Particle (differnt position).png|300px]]


=== Velocity ===
=== Скорость ===


It follows the same way as position. You can configure a minimum velocity (<code>minPos</code>) and an additional velocity (<code>addPos</code>).
Это следует так же, как положение. Вы можете настроить минимальную скорость (<code>minPos</code>) и дополнительную скорость (<code>addPos</code>).


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 60: Line 60:
</syntaxhighlight>
</syntaxhighlight>


In this case all particles have the same velocity (particles fly in the air but will eventually fall down again):
В этом случае все частицы имеют одинаковую скорость (частицы летят в воздухе, но в конечном итоге снова падают):


[[File:Particles (equal velocity).gif|300px]]
[[File:Particles (equal velocity).gif|300px]]


=== Life length ===
=== Срок службы ===


This property is pretty straight forward. A life length of one equals one second.
Это свойство довольно прямолинейно. Продолжительность жизни одного равна одной секунде.


Particles will exist for one 200 milliseconds ...
Частицы будут существовать в течение одних 200 миллисекунд...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 77: Line 77:




Particles will exist for one second ...
Частицы будут существовать одну секунду...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 85: Line 85:
[[File:Particles (long life).gif|300px]]
[[File:Particles (long life).gif|300px]]


=== Quantity ===
=== Количество ===


Determines how many particles will spawn.
Определяет, сколько частиц будет появляться.


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 93: Line 93:
</syntaxhighlight>
</syntaxhighlight>


This will spawn 3 particles each tick.
Это будет порождать 3 частицы каждый тик.


[[File:Particles (many).gif|300px]]
[[File:Particles (many).gif|300px]]


Furthermore you can specify an additional quantity chance ...
Кроме того, вы можете указать дополнительный шанс количества ...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 104: Line 104:
</syntaxhighlight>
</syntaxhighlight>


This will spawn 0 to 100 particles per tick.
Это создаст от 0 до 100 частиц за тик.


[[File:Particles (random many).png|300px]]
[[File:Particles (random many).png|300px]]


=== Color ===
=== Цвет ===


A color can be specified using ARGB (Alhpa, Red, Green, Blue). All values have a range of 0 to 255.
Цвет можно указать с помощью RGBA (альфа, красный, зеленый, синий). Все значения имеют диапазон от 0 до 255.


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 116: Line 116:
</syntaxhighlight>
</syntaxhighlight>


This will spawn red particles ...
Это вызовет появление красных частиц...


[[File:Particles (red).gif|300px]]
[[File:Particles (red).gif|300px]]
Line 125: Line 125:
</syntaxhighlight>
</syntaxhighlight>


This will spawn particles with a random color ...
Это создаст частицы случайного цвета...


[[File:Particles (random colors).gif|300px]]
[[File:Particles (random colors).gif|300px]]


=== Glow ===
=== Свечение ===


This property allows you to define whether the particles will be visible in the dark or not ...
Это свойство позволяет определить, будут ли частицы видны в темноте или нет...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 145: Line 145:
[[File:Particles (glowing brightest).gif|300px]]
[[File:Particles (glowing brightest).gif|300px]]


=== Gravity ===
=== Гравитация ===


Gravity effect can not only be increase or decreased, ...
Эффект гравитации может не только увеличиваться или уменьшаться, ...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 155: Line 155:
[[File:Particles (low gravity).gif|300px]]
[[File:Particles (low gravity).gif|300px]]


... but you can also disable it completely (using zero gravity) or invert it (particles will fly up).
... но вы также можете отключить его полностью (используя невесомость) или инвертировать его (частицы будут летать вверх).


=== Size ===
=== Размер ===


Again, you can specify a minimum size and an additional randomized size ...
Опять же, вы можете указать минимальный размер и дополнительный рандомизированный размер...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 168: Line 168:
[[File:Particles (random size).gif|300px]]
[[File:Particles (random size).gif|300px]]


Furthermore you can specify a <code>SizeEvolve</code> like so ...
Кроме того, вы можете указать <code>SizeEvolve</code> вот так...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 178: Line 178:
[[File:Particles (growing size).gif|300px]]
[[File:Particles (growing size).gif|300px]]


There are many EnumTransformFunctions you can play around with. Linear is the most basic one.
Существует множество функций EnumTransformFunction, с которыми вы можете поиграться. Линейный — самый простой.


=== Model ===
=== Модель ===


There are two types of models. <code>Cube</code> (the one we used so far) and <code>Quads</code>:
Есть два типа моделей. <code>Cube</code> (тот, который мы использовали до сих пор) и <code>Quads</code>:


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 190: Line 190:
[[File:Particles (quads).gif|300px]]
[[File:Particles (quads).gif|300px]]


=== Opacity ===
=== Непрозрачность ===


Quads support custom opacity. This allows you to make them transparent ...
Четырехугольники поддерживают пользовательскую непрозрачность. Это позволяет сделать их прозрачными...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 200: Line 200:
[[File:Particles (opacity).gif|300px]]
[[File:Particles (opacity).gif|300px]]


Similar to <code>SizeEvolve</code> you can add an <code>OpacityEvolve</code> ...
Подобно <code>SizeEvolve</code>, вы можете добавить <code>OpacityEvolve</code>...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 208: Line 208:
[[File:Particles (decreasing opacity).gif|300px]]
[[File:Particles (decreasing opacity).gif|300px]]


=== Self Propelled ===
=== Самоходный ===


This property will make particles don't lose their velocity, even if they would collide with something, as soon as there is enough space they will continue to fly in the direction (with the same speed) ...
Это свойство заставит частицы не терять свою скорость, даже если они столкнутся с чем-то, как только места будет достаточно, они продолжат лететь в том же направлении (с той же скоростью)...


<syntaxhighlight lang="c#">
<syntaxhighlight lang="c#">
Line 219: Line 219:
[[File:Particles (selfpropelled).gif|300px]]
[[File:Particles (selfpropelled).gif|300px]]


=== Die In Air/ Liquid ===
=== Умереть в воздухе/жидкости ===


This property is useful for particles in water, which should disappear once they reach the surface (die in liquid). Of course this can also be used the other way round (die in air).
Это свойство полезно для частиц в воде, которые должны исчезнуть, достигнув поверхности (умереть в жидкости). Конечно, это можно использовать и наоборот (умереть в воздухе).




{{Navbox/modding|Vintage Story}}
{{Navbox/modding|Vintage Story}}

Latest revision as of 05:36, 21 September 2022

Эта страница проверялась в последний раз для версии Vintage Story 1.15.

Other languages:

VintageStory предлагает множество различных типов частиц. Этот урок объяснит вам, как создавать простые частицы, и покажет вам некоторые возможности. Если вы хотите иметь пример того, как их использовать, я либо предложил вам прочитать о блочных частиц или о предметах коллекционирования.

Спавн частиц

Итак, давайте создадим несколько базовых частиц. Я предлагаю создать статическое поле для ваших свойств частиц:

        public static SimpleParticleProperties myParticles = new SimpleParticleProperties(1, 1, ColorUtil.ColorFromArgb(50, 220, 220, 220), new Vec3d(), new Vec3d(), new Vec3f(), new Vec3f());

Теперь у нас есть свойство, осталось только установить положение и создать частицы в мире. Я буду использовать метод OnHeldInteractStart и *Step внутри пользовательского класса Item (подробнее об этом можно прочитать в Collectibles Tutorial):

        public override void OnHeldInteractStart(ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel, ref EnumHandHandling handHandling)
        {
            handHandling = EnumHandHandling.Handled;
        }

        public override bool OnHeldInteractStep(float secondsUsed, ItemSlot slot, EntityAgent byEntity, BlockSelection blockSel, EntitySelection entitySel)
        {
            myParticles.minPos = byEntity.Pos.XYZ.Add(0, byEntity.EyeHeight(), 0).Ahead(1f, byEntity.Pos.Pitch, byEntity.Pos.Yaw);
            byEntity.World.SpawnParticles(myParticles);

            return true;
        }

Это создаст несколько белых кубических частиц прямо перед игроком, которые просто упадут на землю.

BasicParticles.png

Обзор свойств

Есть несколько вещей, которые вы можете настроить. Вот обзор, который охватывает все свойства:

Позиция

В основном есть два свойства. Одним из них является свойство minPos, которое определяет точную позицию, в которой будут появляться частицы. addPos относится к этой позиции, как только частица появится, она будет рандомизирована и добавлена к позиции частицы. Если addPos не определен, все частицы будут появляться в определенной позиции.

Та же позиция:

Particle (equal position).png

Если мы сейчас установим addPos...

    myParticles.addPos = new Vec3d(0.5, 0.5, 0.5);

... частицы будут появляться в области 0,5³:

Particle (differnt position).png

Скорость

Это следует так же, как положение. Вы можете настроить минимальную скорость (minPos) и дополнительную скорость (addPos).

    myParticles.minVelocity = new Vec3f(0, 3, 0);

В этом случае все частицы имеют одинаковую скорость (частицы летят в воздухе, но в конечном итоге снова падают):

Particles (equal velocity).gif

Срок службы

Это свойство довольно прямолинейно. Продолжительность жизни одного равна одной секунде.

Частицы будут существовать в течение одних 200 миллисекунд...

    myParticles.lifeLength = 0.2F;

Particles (short life).gif


Частицы будут существовать одну секунду...

    myParticles.lifeLength = 1F;

Particles (long life).gif

Количество

Определяет, сколько частиц будет появляться.

    myParticles.minQuantity = 3;

Это будет порождать 3 частицы каждый тик.

Particles (many).gif

Кроме того, вы можете указать дополнительный шанс количества ...

    myParticles.minQuantity = 0;
    myParticles.addQuantity = 100;

Это создаст от 0 до 100 частиц за тик.

Particles (random many).png

Цвет

Цвет можно указать с помощью RGBA (альфа, красный, зеленый, синий). Все значения имеют диапазон от 0 до 255.

    myParticles.color = ColorUtil.ToRGBABytes(ColorUtil.ColorFromArgb(255, 255, 0, 0));

Это вызовет появление красных частиц...

Particles (red).gif

    Random rand = new Random();
    myParticles.color = ColorUtil.ToRGBABytes(ColorUtil.ColorFromArgb(255, rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)));

Это создаст частицы случайного цвета...

Particles (random colors).gif

Свечение

Это свойство позволяет определить, будут ли частицы видны в темноте или нет...

    myParticles.glowLevel = 20;

Particles (glowing).gif

    myParticles.glowLevel = 255;

Particles (glowing brightest).gif

Гравитация

Эффект гравитации может не только увеличиваться или уменьшаться, ...

    myParticles.gravityEffect = 0.1F;

Particles (low gravity).gif

... но вы также можете отключить его полностью (используя невесомость) или инвертировать его (частицы будут летать вверх).

Размер

Опять же, вы можете указать минимальный размер и дополнительный рандомизированный размер...

    myParticles.minSize = 0.1F;
    myParticles.maxSize = 1.0F;

Particles (random size).gif

Кроме того, вы можете указать SizeEvolve вот так...

    myParticles.minSize = 0.1F;
    myParticles.maxSize = 1.0F;
    myParticles.SizeEvolve = new EvolvingNatFloat(EnumTransformFunction.LINEAR, 2);

Particles (growing size).gif

Существует множество функций EnumTransformFunction, с которыми вы можете поиграться. Линейный — самый простой.

Модель

Есть два типа моделей. Cube (тот, который мы использовали до сих пор) и Quads:

    myParticles.model = EnumParticleModel.Quad;

Particles (quads).gif

Непрозрачность

Четырехугольники поддерживают пользовательскую непрозрачность. Это позволяет сделать их прозрачными...

    myParticles.color = ColorUtil.ToRGBABytes(ColorUtil.ColorFromArgb(130, rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)));

Particles (opacity).gif

Подобно SizeEvolve, вы можете добавить OpacityEvolve...

    myParticles.OpacityEvolve = new EvolvingNatFloat(EnumTransformFunction.LINEAR, -255);

Particles (decreasing opacity).gif

Самоходный

Это свойство заставит частицы не терять свою скорость, даже если они столкнутся с чем-то, как только места будет достаточно, они продолжат лететь в том же направлении (с той же скоростью)...

    myParticles.minVelocity = new Vec3f((float) (rand.NextDouble() - 0.5), 1f, (float) (rand.NextDouble() - 0.5));
    myParticles.SelfPropelled = true;

Particles (selfpropelled).gif

Умереть в воздухе/жидкости

Это свойство полезно для частиц в воде, которые должны исчезнуть, достигнув поверхности (умереть в жидкости). Конечно, это можно использовать и наоборот (умереть в воздухе).


Icon Sign.png

Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.

Modding
Modding Introduction Getting Started Пакет тем
Content Modding Content Mods Developing a Content Mod Basic Tutorials Intermediate Tutorials Advanced Tutorials Content Mod Concepts
Code Modding Code Mods Setting up your Development Environment
Property Overview ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository