错误cs1501 unity3d

时间:2014-11-03 12:21:05

标签: c# unity3d

我正在尝试按键时让我的角色躲闪,但我一直在犯这个错误

  

CS1501:方法Dodge' takes 2'参数

没有重载

这是躲避脚本的一部分

这是完整的脚本,闪避部分在最后

using UnityEngine;
using System.Collections;

public class player : MonoBehaviour {


public int playerHP;
public GUIStyle bigFont;
public int attackPlayer;
public int defensePlayer;
public int speedPlayer;
public int atckSpeedPlayer;
public int damage;

public enum DodgeDirection { Right, Left, Forward, Backward };
public Vector3 dodge = new Vector3(5, 5, 5);

// Use this for initialization
void Start () {
    playerHP = 500;
    bigFont= new GUIStyle();
    bigFont.fontSize = 40;
    attackPlayer = 10;
    defensePlayer = 8;
    speedPlayer = 10;
    atckSpeedPlayer = 12;
}

// Update is called once per frame
void Update () {

}

void OnTriggerEnter (Collider hit){
    if(hit.tag == "swordEnemy"){
        damage = GameObject.FindWithTag("npcSamuraiNormal").GetComponent<samuraiNormalFsm>().enemyAttack - defensePlayer ;
        playerHP -= damage;
    }

}

public void OnGUI(){


    GUI.Label(new Rect(180,800,100,50), "HP:" + playerHP.ToString(), fonteGrande); //determina posiçao e transforma o valor em string

}

public void Dodge(DodgeDirection dir)
{
    switch(dir) 
    {
    case DodgeDirection.Right:
        rigidbody.AddForce(transform.right * dodge.x + transform.up * dodge.y, ForceMode.Impulse);
        break;
    case DodgeDirection.Left:
        rigidbody.AddForce(transform.right * dodge.x + transform.up * dodge.y, ForceMode.Impulse);
        break;
    case DodgeDirection.Forward:
        rigidbody.AddForce(transform.forward * dodge.z + transform.up * dodge.y, ForceMode.Impulse);
        break;
    case DodgeDirection.Backward:
        rigidbody.AddForce(transform.forward * dodge.z + transform.up * dodge.y, ForceMode.Impulse);
        break;
    }
}

void FixedUpdate()
{
    if (Input.GetKeyDown("l")){
        Dodge(DodgeDirection.Right, dodge);
    //return;
    }
    else if (Input.GetKeyDown("j")){
        Dodge(DodgeDirection.Left, dodge);
    //return;
    }
    else if (Input.GetKeyDown("i")){
        Dodge(DodgeDirection.Forward, dodge);
        //return;
    }
    else if (Input.GetKeyDown("k")){
        Dodge(DodgeDirection.Backward, dodge);
        //return;
    }
}
}

1 个答案:

答案 0 :(得分:1)

您通过传递两个参数来调用Dodge方法,例如:Dodge(DodgeDirection.Forward, dodge);,但您的方法只需要一个:

public void Dodge(DodgeDirection dir)

因此,为了解决这个问题,您有两种选择:

  1. 仅在FixUpdate方法中传递一个参数。
  2. 在方法的签名上添加第二个参数。