我试图让玩家通过按不同的键来选择一种能力,然后通过左键单击来施放它。在施放下一个技能之前,所有技能都有共同的冷却时间。我正在捕获选择哪种能力对每个能力都有不同的影响。
我的代码在添加左键单击的逻辑之前有效,所以如果我按下一个键来施放该能力并开始冷却,但我无法弄清楚为什么左键单击以施放所选的能力没有工作。
这是我所拥有的:
[SerializeField] private float cooldownTimer;
private float cooldown = 2f;
private int abilityChosen = 0;
void Start()
{
}
void Update()
{
//lower cooldown every second
cooldown -= Time.deltaTime;
//different actions on different key presses
if (Input.GetKeyDown(KeyCode.Q))
{
abilityChosen = 1;
Debug.Log("Q");
CastAbility();
}
else if (Input.GetKeyDown(KeyCode.E))
{
abilityChosen = 2;
Debug.Log("E");
CastAbility();
}
else if (Input.GetKeyDown(KeyCode.LeftShift))
{
abilityChosen = 3;
Debug.Log("Left Shift");
CastAbility();
}
else if (Input.GetKeyDown(KeyCode.LeftAlt))
{
abilityChosen = 4;
Debug.Log("Left Alt");
CastAbility();
}
else if (Input.GetKeyDown(KeyCode.Mouse1))
{
abilityChosen = 5;
Debug.Log("Right Click");
CastAbility();
}
}
private void CastAbility()
{
//let you cast an ability only if the cooldown is equal or lower than 0, and if you left click
if (cooldown > 0)
{
Debug.Log("Ability on cooldown");
}
else if (cooldown <= 0)
{
Debug.Log("Ability " + abilityChosen + " Cast");
cooldown = cooldownTimer;
}
}
在底部,在 CastAbility() 方法上,我尝试了这两种方法,仅在单击鼠标左键时才进行投射: 选项 1:
private void CastAbility()
{
//let you cast an ability only if the cooldown is equal or lower than 0, and if you left click
if (cooldown > 0)
{
Debug.Log("Ability on cooldown");
}
else if (cooldown <= 0 && Input.GetKeyDown(KeyCode.Mouse0))
{
Debug.Log("Ability " + abilityChosen + " Cast");
cooldown = cooldownTimer;
}
}
选项2:
private void CastAbility()
{
//let you cast an ability only if the cooldown is equal or lower than 0, and if you left click
if (cooldown > 0)
{
Debug.Log("Ability on cooldown");
}
else if (cooldown <= 0)
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
Debug.Log("Ability " + abilityChosen + " Cast");
cooldown = cooldownTimer;
}
}
}
正如我所说,它在单击时添加施法之前工作正常,因此如果未处于冷却状态,则在按下键时会立即施法。但是我不能用这个逻辑选择然后投射,有什么想法吗?