-
Notifications
You must be signed in to change notification settings - Fork 0
/
Coin.cs
73 lines (60 loc) · 1.28 KB
/
Coin.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using Godot;
using System;
public partial class Coin : Node2D
{
public override void _Ready(){}
public override void _Process(double delta){}
private CharacterBody2D FindCharacterNode(Node node)
{
if (node is CharacterBody2D)
{
return (CharacterBody2D)node;
}
foreach (Node child in node.GetChildren())
{
CharacterBody2D result = FindCharacterNode(child);
if (result != null)
{
return result;
}
}
return null;
}
private AudioStreamPlayer2D FindStreamNode(Node node, string name)
{
if (node is AudioStreamPlayer2D && node.Name == name)
{
return (AudioStreamPlayer2D)node;
}
foreach (Node child in node.GetChildren())
{
AudioStreamPlayer2D result = FindStreamNode(child, name);
if (result != null)
{
return result;
}
}
return null;
}
private void _on_area_2d_body_entered(Node body)
{
Node exampleLevel = GetTree().Root;
CharacterBody2D character = FindCharacterNode(exampleLevel);
AudioStreamPlayer2D coinSound = FindStreamNode(exampleLevel, "PickUp");
if (character != null && body == character)
{
if(coinSound == null)
{
GD.Print("Coin sound not found");
return;
}
coinSound.Play();
DataCoin.CoinGlobal.CoinCount++;
QueueFree();
}
else
{
GD.Print("Not a character");
}
}
}