错误CS1501 unity3d [英] Error cs1501 unity3d
本文介绍了错误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)
因此,为了解决这个问题,你有两个选择:
- 仅传递一个在
FixUpdate
方法的参数。
- 添加第二个参数的方法的签名。
I'm trying to make my character dodge when pressing a key, but I keep geting this error
CS1501: No overload for method
Dodge' takes
2' argumentshere'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:
- Pass only one parameter in the
FixUpdate
method.- Add a second parameter on the method's signature.
这篇关于错误CS1501 unity3d的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文