J’essaie d’esquiver mon personnage lorsque j’appuie sur une touche, mais j’obtiens toujours l’erreur
CS1501: Pas de surcharge pour la méthode
Dodge' takes
2″ arguments
voici la partie du script d’esquive
voici le script complet, la partie dodge est à la fin
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().enemyAttack - defensePlayer ; playerHP -= damage; } } public void OnGUI(){ GUI.Label(new Rect(180,800,100,50), "HP:" + playerHP.ToSsortingng(), fonteGrande); //determina posiçao e transforma o valor em ssortingng } 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; } } }
Vous appelez la méthode Dodge
en passant deux arguments, par exemple: Dodge(DodgeDirection.Forward, dodge);
mais votre méthode n’en demande qu’une:
public void Dodge(DodgeDirection dir)
Donc, pour résoudre ce problème, vous avez deux options:
FixUpdate
qu’un seul paramètre dans la méthode FixUpdate
.