错误CS1501 unity3d [英] Error cs1501 unity3d

查看:163
本文介绍了错误CS1501 unity3d的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让我的性格躲闪按下一个键的时候,但我一直歌厅这个错误




CS1501:无过载方法道奇'需要 2'的参数




这里的闪躲脚本的一部分



下面是完整的剧本,闪避部分是在结束

 ; System.Collections中使用
;

公共类球员:MonoBehaviour {


公众诠释playerHP;
公共GUIStyle BIGFONT;
公众诠释attackPlayer;
公众诠释defensePlayer;
公众诠释speedPlayer;
公众诠释atckSpeedPlayer;
公众诠释损坏;

公共枚举DodgeDirection {右,左,前进,后退};
公众的Vector3闪避=新的Vector3(5,5,5);

//使用这个初始化
无效的start(){
playerHP = 500;
BIGFONT =新GUIStyle();
bigFont.fontSize = 40;
attackPlayer = 10;
defensePlayer = 8;
speedPlayer = 10;
atckSpeedPlayer = 12;
}

//更新是每帧
无效更新调用一次(){

}

无效OnTriggerEnter(撞机命中){
如果(hit.tag ==swordEnemy){
伤害= GameObject.FindWithTag(npcSamuraiNormal)GetComponent< samuraiNormalFsm>()enemyAttack - defensePlayer。;
playerHP - =损坏;
}

}

公共无效OnGUI(){


GUI.Label(新矩形(180,800,100,50 ),HP:+ playerHP.ToString(),fonteGrande); // Determina的posiçaoËtransformaØ勇气EM串

}

公共无效道奇(DodgeDirection DIR)
{
开关(DIR)
{
情况下DodgeDirection.Right:
rigidbody.AddForce(transform.right * dodge.x + transform.up * dodge.y,ForceMode.Impulse);
中断;
情况下DodgeDirection.Left:
rigidbody.AddForce(transform.right * dodge.x + transform.up * dodge.y,ForceMode.Impulse);
中断;
情况下DodgeDirection.Forward:
rigidbody.AddForce(transform.forward * dodge.z + transform.up * dodge.y,ForceMode.Impulse);
中断;
情况下DodgeDirection.Backward:
rigidbody.AddForce(transform.forward * dodge.z + transform.up * dodge.y,ForceMode.Impulse);
中断;
}
}

无效FixedUpdate()
{
如果(Input.GetKeyDown(L)){
道奇(DodgeDirection .Right,闪避);
//返回;
}
,否则如果(Input.GetKeyDown(J)){
道奇(DodgeDirection.Left,闪避);
//返回;
}
,否则如果(Input.GetKeyDown(I)){
道奇(DodgeDirection.Forward,闪避);
//返回;
}
,否则如果(Input.GetKeyDown(K)){
道奇(DodgeDirection.Backward,闪避);
//返回;
}
}
}


解决方案
道奇(DodgeDirection.Forward,闪避):>

您是通过传递两个参数,例如调用道奇方法$ C>但你的方法只要求之一:

 公共无效道奇(DodgeDirection DIR)

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




  1. 仅传递一个在 FixUpdate 方法的参数。

  2. 添加第二个参数的方法的签名。


I'm trying to make my character dodge when pressing a key, but I keep geting this error

CS1501: No overload for method Dodge' takes2' arguments

here's the part of the dodging script

here's the full script, the dodge part is at the end

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;
    }
}
}

解决方案

You are calling the Dodge method by passing two arguments, for example: Dodge(DodgeDirection.Forward, dodge); but your method only asks for one:

public void Dodge(DodgeDirection dir)

So in order to solve this, you have two options:

  1. Pass only one parameter in the FixUpdate method.
  2. Add a second parameter on the method's signature.

这篇关于错误CS1501 unity3d的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆