Random Particles
This commit is contained in:
parent
b84e5d4614
commit
49d664e472
27
Main.cs
27
Main.cs
@ -1,18 +1,37 @@
|
|||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
|
||||||
|
|
||||||
public class Main : Node2D
|
public class Main : Node2D
|
||||||
{
|
{
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
GD.Randomize();
|
||||||
|
InitializeParticles();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void _Process(float delta)
|
public override void _Process(float delta)
|
||||||
{
|
{
|
||||||
if (Input.IsActionJustPressed("quit"))
|
if (Input.IsActionJustPressed("quit")) GetTree().Quit();
|
||||||
|
if (Input.IsActionJustPressed("reset")) GetTree().ReloadCurrentScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeParticles()
|
||||||
{
|
{
|
||||||
GetTree().Quit();
|
var particleScene = GD.Load<PackedScene>("res://Particle.tscn");
|
||||||
|
for (var i = 0; i < 50; i++)
|
||||||
|
{
|
||||||
|
var particle = particleScene.Instance<Particle>();
|
||||||
|
GetNode<Node2D>("Particles").AddChild(particle);
|
||||||
|
particle.Position = GetRandomParticlePosition();
|
||||||
|
particle.Hue = (float) GD.RandRange(0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Vector2 GetRandomParticlePosition()
|
||||||
|
{
|
||||||
|
const int padding = 32;
|
||||||
|
var viewportRect = GetViewportRect();
|
||||||
|
var position = new Vector2((float) GD.RandRange(padding, viewportRect.Size.x - padding),
|
||||||
|
(float) GD.RandRange(padding, viewportRect.Size.y - padding));
|
||||||
|
return position;
|
||||||
|
}
|
||||||
}
|
}
|
@ -4,3 +4,5 @@
|
|||||||
|
|
||||||
[node name="Main" type="Node2D"]
|
[node name="Main" type="Node2D"]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="Particles" type="Node2D" parent="."]
|
||||||
|
22
Particle.cs
Normal file
22
Particle.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using Godot;
|
||||||
|
|
||||||
|
public class Particle : Node2D
|
||||||
|
{
|
||||||
|
private float _spriteHue;
|
||||||
|
private Sprite _spriteNode;
|
||||||
|
|
||||||
|
public float Hue
|
||||||
|
{
|
||||||
|
get => _spriteHue;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_spriteHue = Mathf.Clamp(value, 0, 1);
|
||||||
|
_spriteNode.Modulate = Color.FromHsv(_spriteHue, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void _Ready()
|
||||||
|
{
|
||||||
|
_spriteNode = GetNode<Sprite>("Sprite");
|
||||||
|
}
|
||||||
|
}
|
10
Particle.tscn
Normal file
10
Particle.tscn
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[gd_scene load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://textures/particle.png" type="Texture" id=1]
|
||||||
|
[ext_resource path="res://Particle.cs" type="Script" id=2]
|
||||||
|
|
||||||
|
[node name="Particle" type="Node2D"]
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="Sprite" type="Sprite" parent="."]
|
||||||
|
texture = ExtResource( 1 )
|
@ -1,7 +0,0 @@
|
|||||||
[gd_resource type="Environment" load_steps=2 format=2]
|
|
||||||
|
|
||||||
[sub_resource type="ProceduralSky" id=1]
|
|
||||||
|
|
||||||
[resource]
|
|
||||||
background_mode = 2
|
|
||||||
background_sky = SubResource( 1 )
|
|
BIN
icon.png
BIN
icon.png
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -28,6 +28,11 @@ quit={
|
|||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777217,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777217,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
reset={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":82,"unicode":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
@ -38,4 +43,4 @@ common/enable_pause_aware_picking=true
|
|||||||
quality/driver/driver_name="GLES2"
|
quality/driver/driver_name="GLES2"
|
||||||
vram_compression/import_etc=true
|
vram_compression/import_etc=true
|
||||||
vram_compression/import_etc2=false
|
vram_compression/import_etc2=false
|
||||||
environment/default_environment="res://default_env.tres"
|
environment/default_clear_color=Color( 0, 0, 0, 1 )
|
||||||
|
BIN
textures/particle.png
Normal file
BIN
textures/particle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
35
textures/particle.png.import
Normal file
35
textures/particle.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/particle.png-6bc2982443cc9a0ea7820fc4c0d2daf7.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/particle.png"
|
||||||
|
dest_files=[ "res://.import/particle.png-6bc2982443cc9a0ea7820fc4c0d2daf7.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=true
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
Loading…
Reference in New Issue
Block a user