Modifier vitesse déplacement spamming touche
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Modifier vitesse déplacement spamming touche
Bonjour,
Je suis en train de créer un petit jeu de course multijoueur avec photon,
Mon objectif et de modifier la vitesse de déplacement de mon joueur en fonction de la vitesse a la quel il spam sa touche disons espace lorsqu'il est dans une certaine zone. Mon script C# de déplacement basique fonctionne mais je n'arrive pas a trouver une solution pour augmenter la vitesse de déplacement du joueur en fonction de son spamming de la touche espace, en gros ajouter genre 1 de moove speed a chaque fois que le joueur appuis sur la touche en définissant bien sur une limite.
J'ai donc if (Input.GetKey(KeyCode.Space)) mais je ne sais pas comment augmenter la vitesse de deplacement.
Ma question peut paraître bête mais je débute en programmation et je n'est pas trouver de solutions dans mes recherches,
Merci
Je suis en train de créer un petit jeu de course multijoueur avec photon,
Mon objectif et de modifier la vitesse de déplacement de mon joueur en fonction de la vitesse a la quel il spam sa touche disons espace lorsqu'il est dans une certaine zone. Mon script C# de déplacement basique fonctionne mais je n'arrive pas a trouver une solution pour augmenter la vitesse de déplacement du joueur en fonction de son spamming de la touche espace, en gros ajouter genre 1 de moove speed a chaque fois que le joueur appuis sur la touche en définissant bien sur une limite.
J'ai donc if (Input.GetKey(KeyCode.Space)) mais je ne sais pas comment augmenter la vitesse de deplacement.
Ma question peut paraître bête mais je débute en programmation et je n'est pas trouver de solutions dans mes recherches,
Merci
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Modifier vitesse déplacement spamming touche
Salut,
En fait la réponse à ta question se trouve dans l'expression de ton besoin.
- Tu as une vitesse -> variable
- A chaque appuie de la barre d'espace -> Ta condition
- Tu veux augmenter sa vitesse de 1 -> variable = variable + 1
Voilà la base. Maintenant je suppose que tu voudras diminuer la vitesse si on ne fait rien donc :
- Si la vitesse est supérieur à la vitesse minimum autorisé -> condition
- On la diminue toute les X secondes -> Coroutine avec un bon waitforseconds et un vitesse = vitesse - 1 http://docs.unity3d.com/Manual/Coroutines.html
- On ne veut pas la diminuer quand on appuie sur la touche espace - > On stop la coroutine dans la condition de l'appuie de la touche espace
Voilà en gros la logique.
En fait la réponse à ta question se trouve dans l'expression de ton besoin.
- Tu as une vitesse -> variable
- A chaque appuie de la barre d'espace -> Ta condition
- Tu veux augmenter sa vitesse de 1 -> variable = variable + 1
Voilà la base. Maintenant je suppose que tu voudras diminuer la vitesse si on ne fait rien donc :
- Si la vitesse est supérieur à la vitesse minimum autorisé -> condition
- On la diminue toute les X secondes -> Coroutine avec un bon waitforseconds et un vitesse = vitesse - 1 http://docs.unity3d.com/Manual/Coroutines.html
- On ne veut pas la diminuer quand on appuie sur la touche espace - > On stop la coroutine dans la condition de l'appuie de la touche espace
Voilà en gros la logique.
Re: Modifier vitesse déplacement spamming touche
...ou, ajouter un "Addforce" à chaque appuis de la touche en question.
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class BougeToiEnAvant : MonoBehaviour {
public float puissance;
public Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKeyDown("space"))
rb.AddForce(transform.forward * puissance);
}
}
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Modifier vitesse déplacement spamming touche
Bien plus simple, je n'y avais pas pensé, j'oublie souvent l'emploi de la physique pour ça. D'ailleurs je me demande c'est quoi le mieux, si tu peux m'éclairer. Pour du réseau il est préférable pour des questions de sécurité de gérer ça du côté serveur il me semble afin d'éviter tout hack, la physique n'est-elle pas plus coûteuse ?
Re: Modifier vitesse déplacement spamming touche
D'autant que cette solution s'adapte au terrain : peu d'efforts (ou d'appuis) quand le véhicule est dans "une descente", à l'inverse...(tu te souviens des jeux "Decathlon" dans les années 80/90?. Les tueux de manettes SpeedKing... )MasterNovice a écrit :Bien plus simple, je n'y avais pas pensé, j'oublie souvent l'emploi de la physique pour ça.
Pour éviter au maximum le "hack", oui, mieux vaut gérer cela du coté du serveur et c'est effectivement plus couteux. Une des raison pour laquelle j’essaie de me "passer" de la physique quand cela est possible : "Tweener" et "Bezier" sont alors mes amis. En même temps, pas trop le choix vu les contraires de la gravité autours d'une sphere/planèteMasterNovice a écrit : D'ailleurs je me demande c'est quoi le mieux, si tu peux m'éclairer. Pour du réseau il est préférable pour des questions de sécurité de gérer ça du côté serveur il me semble afin d'éviter tout hack, la physique n'est-elle pas plus coûteuse ?
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Modifier vitesse déplacement spamming touche
C'est bien l'avantage de la physique même si c'est un peu plus coûteux ça simplifie le code et rend les réactions plus réalistes. J'avais complètement zappé, trop pris l'habitude de m'en passer, il n'y a pas de petites économies dans le code avec moiZJP a écrit :D'autant que cette solution s'adapte au terrain : peu d'efforts (ou d'appuis) quand le véhicule est dans "une descente", à l'inverse...(tu te souviens des jeux "Decathlon" dans les années 80/90?. Les tueux de manettes SpeedKing... )
Je me souviens de ces types de jeux, d'ailleurs quand ils en ont sorti sur la playstation1 je m'éclatais dessus (même si les manettes ne donnaient pas la même jouissance).
Merci pour la réponse, c'est bien ce que je pensais. Les Tweener va falloir que je regarde lequel est le mieux aujourd'hui, je m'étais arrêté à Hotween à l'époque. Je vois que t'es toujours sur ton projet de Moon, c'est cool ça, tu m'étonne que tu n'as pas trop le choix pour la physiqueZJP a écrit :Pour éviter au maximum le "hack", oui, mieux vaut gérer cela du coté du serveur et c'est effectivement plus couteux. Une des raison pour laquelle j’essaie de me "passer" de la physique quand cela est possible : "Tweener" et "Bezier" sont alors mes amis. En même temps, pas trop le choix vu les contraires de la gravité autours d'une sphere/planète
Bon au moins je pense que là Melread à toute les réponses pour faire son code et j'ai appris des choses.
Re: Modifier vitesse déplacement spamming touche
Merci à vous pour vos réponses si rapide !
J'ai utiliser la méthode plus script de MasterNovice et le script fonctionne très bien, cependant, quand je met un dans mon OnTriggerStay, j'ai une erreur, donc cela fonctionne quand je joue seul mais dès qu'un deuxième joueur arrive il ne fonctionne plus.
Je précise que j'utilise Photon pour la partie réseau, si quelqu'un saurait comment faire, ou mettre le if view is mine je lui en serais reconnaissant.
Voici mon code, merci d'avance
J'ai utiliser la méthode plus script de MasterNovice et le script fonctionne très bien, cependant, quand je met un
Code : Tout sélectionner
if (view.isMine) {
Je précise que j'utilise Photon pour la partie réseau, si quelqu'un saurait comment faire, ou mettre le if view is mine je lui en serais reconnaissant.
Voici mon code, merci d'avance
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class sprint : MonoBehaviour {
private PhotonView view;
public float translationCoeff = 1f;
// Use this for initialization
void Start () {
view = GetComponent<PhotonView> ();
}
void OnTriggerStay (){
if (Input.GetKeyDown (KeyCode.Space)) {
//On sprint
translationCoeff += 1f;
Debug.Log ("Tu cours a : " + translationCoeff);
if (translationCoeff >= 150f) {
translationCoeff = 149f;
}
if (translationCoeff <= 150f) {
StartCoroutine ("corout1");
}
if (translationCoeff <= 0) {
translationCoeff = 1f;
}
}
}
IEnumerator corout1 (){
yield return new WaitForSeconds (3);
translationCoeff -= 1f;
Debug.Log ("Tu cours a :" + translationCoeff);
if (Input.GetKeyDown (KeyCode.Space)) {
StopCoroutine("courout1");
}
}
// Update is called once per frame
void Update () {
}
}
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Modifier vitesse déplacement spamming touche
De rien,
Je ne connais pas vraiment Photon mais je crois que tu devrais peut être essayer
Si tu pouvais écrire l'erreur qu'il te met ça serait plus simple pour t'aider
En tout cas, ça fait plaisir de voir que sans te donner le code tu as su te débrouiller pour l'écrire à partir des infos données. Tu progresseras vite si tu continue comme ça et ça motive à te donner un coups de main.
Je ne connais pas vraiment Photon mais je crois que tu devrais peut être essayer
Code : Tout sélectionner
public class sprint : Photon.MonoBehaviour
......
......
if(photonView.isMine)
En tout cas, ça fait plaisir de voir que sans te donner le code tu as su te débrouiller pour l'écrire à partir des infos données. Tu progresseras vite si tu continue comme ça et ça motive à te donner un coups de main.
Re: Modifier vitesse déplacement spamming touche
Salut,
Merci pour ta réponse et les encouragements, ça fait toujours plaisir !
Le script ne fonctionne pas non plus avec ta technique, il n'affiche pas d'erreur au lancement du jeu mais dès que je rentre dans le trigger, la consol affiche l'erreur "NullReferenceExeption : Objet references not set to an instance of objet sprint.OnTriggerStay () (at Assets/Scripts/srpints.cs:17)
L'erreur doit venir du trigger et photon car le script tout seul marche sans aucun soucis, le voila au cas ou :
Merci pour ta réponse et les encouragements, ça fait toujours plaisir !
Le script ne fonctionne pas non plus avec ta technique, il n'affiche pas d'erreur au lancement du jeu mais dès que je rentre dans le trigger, la consol affiche l'erreur "NullReferenceExeption : Objet references not set to an instance of objet sprint.OnTriggerStay () (at Assets/Scripts/srpints.cs:17)
L'erreur doit venir du trigger et photon car le script tout seul marche sans aucun soucis, le voila au cas ou :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class sprint : Photon.MonoBehaviour {
private PhotonView view;
public float translationCoeff = 1f;
// Use this for initialization
void Start () {
view = GetComponent<PhotonView> ();
}
void OnTriggerStay (){
if(photonView.isMine) {
if (Input.GetKeyDown (KeyCode.Space)) {
//On sprint
translationCoeff += 1f;
Debug.Log ("Tu cours a : " + translationCoeff);
}
if (translationCoeff >= 150f) {
translationCoeff = 149f;
}
if (translationCoeff <= 150f) {
StartCoroutine ("corout1");
}
if (translationCoeff <= 0) {
translationCoeff = 1f;
}
}
}
IEnumerator corout1 (){
yield return new WaitForSeconds (3);
translationCoeff -= 1f;
Debug.Log ("Tu cours a :" + translationCoeff);
if (Input.GetKeyDown (KeyCode.Space)) {
StopCoroutine("courout1");
}
}
// Update is called once per frame
void Update () {
}
}