玩家不能再攻击了? (aRPG-Unity)

时间:2019-04-25 17:22:57

标签: c# unity3d

嘿,每个人都需要帮助,我正在制作aRPG,并决定添加一些特殊攻击,一切进展顺利-但现在我似乎无法攻击敌人,但他仍然可以攻击我。

我将附加2个脚本,第一个是玩家战斗,第二个是特殊攻击脚本。我上次在编写特殊攻击代码,看来怎么也找不到导致问题的原因。

以下是玩家的战斗(仅附上重要内容):

void Update () 
{
    if(Input.GetKeyDown(KeyCode.Space) && !specialAttack)
    {
        inAction = true;
    }

    if(inAction)
    {
        if(attackFunction (0, 1, KeyCode.Space))
        {

        }
        else
        {
            inAction = false;
        }
    }
    die ();
}

public bool attackFunction(int stunSeconds, double scaledDamage, KeyCode key)
{
    if(Input.GetKey(key)&&inRange ())
    {
        GetComponent<Animation>().Play(attack.name);
        ClickToMove.attack = true;

        if(opponent!=null)
        {
            transform.LookAt(opponent.transform.position);
        }
    }

这是特殊的攻击脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpecialAttack : MonoBehaviour 
{
    public combat player;
    public KeyCode key;
    public double damagePercentage;
    public int stunTime;
    public bool inAction;

    void Update () 
    {
        if(Input.GetKeyDown(key) && !player.specialAttack)
        {
            player.resetAttackFunction();
            player.specialAttack = true;
            inAction = true;
        }

        if(inAction)
        {
            if(player.attackFunction(stunTime, damagePercentage, key))
            {

            }
            else
            {
                inAction = false;
            }
        }
    }   
}

如果有人可以帮助我解决这个问题,我将不胜感激,我不知道出了什么问题,但是我感觉这是Special Attack脚本中的某个地方,因为动画似乎重置并且不让我攻击

请帮助:)

1 个答案:

答案 0 :(得分:1)

inRange()函数内部可能存在某些内容。看来您在if语句中没有任何代码。

if(player.attackFunction(stunTime, damagePercentage, key))
{

}