我正在尝试按键时让我的角色躲闪,但我一直在犯这个错误
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;
}
}
}
答案 0 :(得分:1)
您通过传递两个参数来调用Dodge
方法,例如:Dodge(DodgeDirection.Forward, dodge);
,但您的方法只需要一个:
public void Dodge(DodgeDirection dir)
因此,为了解决这个问题,您有两种选择:
FixUpdate
方法中传递一个参数。