blob: a0a595af661a5657122efe5dcc1a039b11573ba9 (
plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public partial class PlayerManager : Singleton<PlayerManager>
{
// 持有的装备
public List<EquipBase> equips { get { return m_Equips; } }
private List<EquipBase> m_Equips = new List<EquipBase>();
private Coroutine m_CoFire;
public bool isFire { get; private set; }
private bool m_AutoFire;
private float m_AutoFireDuration = 1f;
void InitEquips()
{
m_Equips.Add(new Equip_Gun());
m_Equips.Add(new Equip_GrenadeLauncher());
m_AutoFire = false;
}
/// <summary>
/// 装备循环
/// </summary>
void UpdateEquips()
{
for(int i = 0; i < m_Equips.Count; ++i)
{
m_Equips[i].Update();
}
}
/// <summary>
/// 检查输入,使用装备
/// </summary>
void CheckInput()
{
if (Input.GetButtonDown("Fire1") || (Input.GetAxisRaw("GunTrigger") == 1))
{
if(m_AutoFire)
{
m_AutoFire = false;
}
if(TinyCountDown.Instance.Get("ReleaseFire") > 0)
{
m_AutoFire = true;
}
isFire = true;
if (m_CoFire == null)
{
m_CoFire = GameApp.Instance.StartCoroutine(coFire());
}
}
if (!m_AutoFire && !Input.GetButton("Fire1") && (Input.GetAxisRaw("GunTrigger") == 0))
{
TinyCountDown.Instance.Set("ReleaseFire", m_AutoFireDuration);
isFire = false;
if (m_CoFire != null)
{
GameApp.Instance.StopCoroutine(m_CoFire);
m_CoFire = null;
}
}
}
/// <summary>
/// 开火
/// </summary>
/// <returns></returns>
IEnumerator coFire()
{
while (true)
{
for(int i = 0; i < m_Equips.Count; ++i)
{
EquipBase equip = m_Equips[i];
if (equip == null)
continue;
if(equip.autoMode == EquipBase.AutoMode.Interval)
{
string id = equip.GetHashCode().ToString();
float countDown = TinyCountDown.Instance.Get(id); // 倒计时脱离fire单独计时
if(countDown <= 0)
{
equip.OnTrigger(m_Crew.gameObject);
TinyCountDown.Instance.Set(id, equip.interval);
}
else
{
}
}
}
yield return null;
}
}
}
|