1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
| using UnityEngine;
using System.Collections;
public class PlayerControl : MonoBehaviour
{
[HideInInspector]
public bool facingRight = true; // Reste sur la face droite
[HideInInspector]
public bool jump = false; // Condition pour que le joueur doit sauter.
public float DirectionDampTime = .50f;
public float moveForce = 365f; // Montant de la force ajouté à déplacer le joueur à gauche et à droite.
public float maxSpeed = 5f; // Le plus rapide, le joueur peut se déplacer dans l'axe des x.
public AudioClip[] jumpClips; // Tableau de clips pour quand le joueur saute.
public float jumpForce = 1000f; // Montant de la force ajouté lorsque le joueur saute.
public AudioClip[] taunts; // Tableau de clips pour quand les railleries des joueurs.
public float tauntProbability = 50f; // Risque de raillerie passe.
public float tauntDelay = 1f; // Delay lorsque la raillerie devrait se produire.
public EasyJoystick MyJoystick;
private int tauntIndex; // L'indice de l'ensemble des railleries indiquant la raillerie la plus récente.
private Transform groundCheck; // Un marquage où pour vérifier si le lecteur est relié à la terre la position.
private bool grounded = false; // Un marquage où pour vérifier si le lecteur est relié à la terre la position.
private Animator anim; // Référence à la composante animateur du joueur.
private Transform Jump;
//Début du bouton jump
void OnEnable(){
EasyButton.On_ButtonPress += On_ButtonPress;
EasyButton.On_ButtonUp += On_ButtonUp;
}
void OnDisable(){
EasyButton.On_ButtonPress -= On_ButtonPress;
EasyButton.On_ButtonUp -= On_ButtonUp;
EasyButton.On_ButtonDown -= On_ButtonDown;
}
void OnDestroy(){
EasyButton.On_ButtonPress -= On_ButtonPress;
EasyButton.On_ButtonUp -= On_ButtonUp;
}
//Fin du bouton
void Start(){
Jump = transform.FindChild("Jump").transform;
}
void On_ButtonPress (string buttonName){
if (buttonName == "Jump") {
jump = true;
}
}
void On_ButtonUp (string buttonName)
{
if (buttonName == "Jump"){
jump = false;
}
}
void On_ButtonDown (string buttonName)
{
if (buttonName == "Jump"){
jump = false;
}
}
void Awake()
{
// Mise en place des références.
groundCheck = transform.Find("groundCheck");
anim = GetComponent<Animator>();
}
void Update()
{
// Le joueur est au sol si une linecast à la position de groundcheck frappe quelque chose sur la couche de sol.
grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
// Si le bouton de saut est pressé et le joueur est mis à la terre, le joueur doit sauter.
if(Input.GetButtonDown("Jump") && grounded)
jump = true;
}
void FixedUpdate ()
{
// Mettre en cache l'entrée horizontale.
float h = Input.GetAxis("Horizontal");
// The Speed animator parameter is set to the absolute value of the horizontal input.
anim.SetFloat("Speed", Mathf.Abs(h));
// If the player is changing direction (h has a different sign to velocity.x) or hasn't reached maxSpeed yet...
if(h * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * h * moveForce);
// If the player's horizontal velocity is greater than the maxSpeed...
if(Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed)
// ... set the player's velocity to the maxSpeed in the x axis.
rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if(h > 0 && !facingRight)
// ... flip the player.
Flip();
// Otherwise if the input is moving the player left and the player is facing right...
else if(h < 0 && facingRight)
// ... flip the player.
Flip();
//Mouvement Joystick
float hj = MyJoystick.JoystickAxis.x;
//Animation mouvement Joystick
anim.SetFloat("Speed", Mathf.Abs(hj));
//Il bouge droite ou gauche selon les condition ci-dessous
if(hj * rigidbody2D.velocity.x < maxSpeed)
// ... add a force to the player.
rigidbody2D.AddForce(Vector2.right * hj * moveForce);
// If the player's horizontal velocity is greater than the maxSpeed...
if(Mathf.Abs(rigidbody2D.velocity.x) > maxSpeed)
// ... set the player's velocity to the maxSpeed in the x axis.
rigidbody2D.velocity = new Vector2(Mathf.Sign(rigidbody2D.velocity.x) * maxSpeed, rigidbody2D.velocity.y);
// If the input is moving the player right and the player is facing left...
if(hj > 0 && !facingRight)
// ... flip the player.
Flip();
// Otherwise if the input is moving the player left and the player is facing right...
else if(hj < 0 && facingRight)
// ... flip the player.
Flip();
// If the player should jump...
if(jump)
{
// Set the Jump animator trigger parameter.
anim.SetTrigger("Jump");
// Play a random jump audio clip.
int i = Random.Range(0, jumpClips.Length);
AudioSource.PlayClipAtPoint(jumpClips[i], transform.position);
// Add a vertical force to the player.
rigidbody2D.AddForce(new Vector2(0f, jumpForce));
// Make sure the player can't jump again until the jump conditions from Update are satisfied.
jump = false;
}
}
void Flip ()
{
// Switch the way the player is labelled as facing.
facingRight = !facingRight;
// Multiply the player's x local scale by -1.
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
public IEnumerator Taunt()
{
// Check the random chance of taunting.
float tauntChance = Random.Range(0f, 100f);
if(tauntChance > tauntProbability)
{
// Wait for tauntDelay number of seconds.
yield return new WaitForSeconds(tauntDelay);
// If there is no clip currently playing.
if(!audio.isPlaying)
{
// Choose a random, but different taunt.
tauntIndex = TauntRandom();
// Play the new taunt.
audio.clip = taunts[tauntIndex];
audio.Play();
}
}
}
int TauntRandom()
{
// Choose a random index of the taunts array.
int i = Random.Range(0, taunts.Length);
// If it's the same as the previous taunt...
if(i == tauntIndex)
// ... try another random taunt.
return TauntRandom();
else
// Otherwise return this index.
return i;
}
} |
Partager