-Oui
-Oui
-Comme j'utilise l'objet 3D capsule, un capsule collider s'est créé automatiquement sur le joueur et la météorite
Bon, au final j'ai réussi, il fallait seulement que je coche "IsTrigger" sur ma météorite pour que ça marche
Merci à toi TheRealMarco d'avoir essayé de résoudre mon problème
Salut a tous, j'ai un soucis avec le scripting en network, j'ai un moteur qui a en child un clavier, les deux on "local player authority" de coché, j'ai aussi un player, avec un player controller a l'interieur.
dans le script du clavier (qui est en network behavior) j'ai juste une ligne qui dit a ma machine de s'allumer :
if(toActivate != null && toActivate.GetComponent<Machine>() != null)
toActivate.GetComponent<Machine>().Toggle();
ça appel la fonction toggle du script machine qui est aussi en networkbahvior, la fonctione change un bool isOn en sa version contraire, si la fonction est appelé sur une machine local redirige vers un [Command] qui appel la même fonction pour qu'elle soit appelé sur le serveur :
[Command]
public void CmdToggle()
{
Toggle();
debugPanel.text = debugPanel.text + "\n server isOn value : " + isOn.ToString();
}
public void Toggle()
{
if (!isServer)
CmdToggle();
else
{
isOn = !isOn;
}
}
avec un syncvar sur le bool et un hook qui donne vers une fonction qui dois changer mes valeurs sur mes clients.
Le soucis viens la : Quand j'appui sur le bouton avec le serveur tout marche, la machine s'eteint et s'allume sur le serveur et sur le client, mais quand je fait l'inverse rien ne se produit, ni sur le cl, j'ai essaye de remonter pour voir ou le problème se situe et il semblerais que le signal se stop une fois qu'il est dans le toggle de la machine local et ne se transmet pas jusqu'au Cmdtoggle du serveur, j'ai essayer des tas de moyen et impossible de trouver pourquoi
un peu d'aide me serais utile car je m'arrache les cheveux la... merci d'avance a vous !
Hello, peux pas tester pour le moment mais si je dis pas de bêtises, [Command] s’exécute depuis un client sur le serveur donc ton if (!isServer) CmdToggle(); n'a pas lieu d'être (puisque le serveur est aussi un client comme un autre) ; tente d’appeler simplement ton CmdToggle();.
Sur le principe, ton switch de valeur de isOn devrait se faire dans la Cmd, sinon t'appelle la commande sans changer quoi que ce soit (et c'est probablement la cause du soucis coté client). Ici la var ne change que quand tu appelle toggle sur le serveur et se réplique via syncvar en omettant complètement la cmd.
J'me plante p'tet complètement par contre, je testerai à l'occasion si t'as pas résolu le pb
Désolé du double post mais pour être plus clair (pas testé)
[Command]
public void CmdToggle()
{
isOn = !isOn;
debugPanel.text = debugPanel.text + "\n server isOn value : " + isOn.ToString();
}
public void Toggle()
{
CmdToggle();
}
merci a toi de venir a mon aide
Non ça ne fonctionne pas, ça fait toujours la même chose : si je le fait avec le launcher qui host ça marche et ça change chez le client mais quand j'essaye de faire la même chose coté serveur ça n'a même pas l'air de changer la value isOn
Je sais pas si c'est un bug chez moi ou de jvc mais mon message s'affiche pas, je le redit la au cas ou :
Merci a toi pour ton aide
Malheureusement ça ne fonctionne pas, toujours le même soucis, quand j'appui sur le bouton avec le serveur ça fonctionne sur le serveur ET sur le client mais quand je fait la même chose coté client rien ne se passe
EDIT : en fait les deux message apparaisse, je pense que c'est un bug et que la nouvelle page ne se crée pas avec un seul message en plus, je laisse les deux parce que quand je supprime l'un des deux la page disparais :/
Désolé de lire que ça marche pas mais hey, t'as au moins enlevé quelques lignes sans paumer la fonctionnalité
Pour confirmer la structure : t'as une machine avec un clavier et les 2 joueurs sont censés pouvoir interagir avec (le client du serveur et un autre client connecté) ? si tu lance le serveur en standalone et le client dans l'éditeur, quel est le statut du clavier ? parce que si tu coche local player authority, les scripts et composants du clavier et de la machine devraient être désactivés/inaccessibles depuis le client (et tu devrais pas pouvoir invoquer de command du tout). Si tu rajoutes une ligne de texte à ton log quand t'appelle Toggle() coté client, ça fonctionne ? et idem dans la command ?
J'aurai accès à unity dans la semaine je ferai un p'tit test.
GL ^^
Il ne se passe rien du tout, la valeur de mon moteur ne bouge pas, quand je suis l'appel des command via une sorte de console programmé vite fait ça passe par mon clavier, qui va dans ma machine coté server puis ça s'arrête la, la partie serveur n'est pas appelé
Hey,
J'aurais une question, car ça fait depuis hier soir que je me bat avec Unity par rapport aux performances sur Android
Bon, j'avais sorti un premier jeu qui était en terme de drawcall à ~8 à 10, donc niveau perfs c'était nickel
Là je part sur quelque chose d'un peu plus audacieux, en faisant les tests je me suis rendu compte que ça ramouillait pas mal, et quand j'ai vu les drawcall... Bon, ~100
Du coup, j'ai fais en sorte de baisser tout ça à ~14 actuellement
Mon soucis étant : J'ai toujours des soucis en terme de performance. Je n'arrive jamais à dépasser les 40 ips. Pour le téléphone c'est un Wiko Lenny 3, donc le bas du bas du panier, mais avec seulement 14 drawcall, je ne pense pas que ça joue énormément
J'avais des spot lights, je me suis rendu compte que chacun d'eux prenaient ~20 draw, du coup j'ai tout baké, et là j'ai quelque chose d'assez étonnant :
Si je laisse mon fond de jeu je suis dans les 40ips, mais si je le retire, je suis à 60 ips
Avec une image ce sera plus parlant :
Par rapport au profiler, sur android j'ai le fameux present and sync qui prend pas mal, la v sync est désactivé, et j'ai touché à un peu tous les réglages possibles, sans réel impact
J'imagine donc que c'est la superposition de la texture des lumières qui prend autant
D'où ma question (Car je n'ai pas besoin de lumières en temps réel à vrai dire), : Est ce qu'il y a un moyen de palier à ce problème ?
Merci d'avance
Pourquoi tu rajoutes pas les lumières directement sur l'image de fond sous Gimp ?
Car je ne suis pas encore sûr du rendu final et je n'ai pas envie de devoir refaire des textures h24, surtout que je suis très mauvais dans ce domaine et qu'en plus avoir un effet réussi avec plusieurs sources lumineuses c'est pas ouf ouf (Puis aussi car je suis un peu fainéant, je suis pas en informatique pour rien )
Mais il doit bien y avoir un truc, vu qu'en soit, baké ses lumières ça revient à créer une texture appliquer par dessus les objets statiques non ?
ça ne doit pas prendre plus de un draw théoriquement
Bonjour, quand je lance Unity, il n'arête pas de me faire simultanément une barre de chargement puis un écran gris, et il continue comme ça
Est ce que quelqu'un à une solution?
Zoltan_ => Essaye de le réinstaller si ce n'est pas déjà fait. Lance en mode administrateur. Et sinon quel est ton système d'exploitation ?
Sinon j'aurais une petite question pour ce qui s'y connaissent caméra et mouseposition.
Depuis quelques jours j'essaye de faire un jeu de billiard. Pour ce faire, j'ai une bille. Une fois l'objet sélectionné avec un clique gauche, je peux recliquer dessus avec un clique droit et en maintenant appuyé je tire ma souris vers l'arrière.
Quand je relâche le clique, cela donne de l'impulsion à ma bille en fonction de la distance entre ma souris et la bille. De plus la direction de la bille est set comme étant l'opposé de la direction de la bille vers la souris.
J'ai essayé de faire cela à travers des calculs simple de direction (bille.transform.position - mouse.transform.position)
Mais j'avais des problèmes. De façon irrégulière, la direction n'avait rien à voir avec la souris. J'ai fais pleins de check et j'ai pas trouvé le problème.
Du coup maintenant j'ai set la rotation de ma bille à l'opposé de la position de ma souris, et je lui fais un transform.forward.
Ça fonctionne mais... uniquement en ortho :/ Dès que je mets la caméra en perspective la direction refoire comme avant.
Des idées d'où cela pourrait venir ? Ça doit sûrement venir de l'axe z, mais mes recherches ne m'ont pas permis de trouver quelque chose d'intéressant. Je ne sais pas quoi en faire. J'ai essayé de le set à 0, à la distance entre ma caméra et le sol etc.. J'ai rien trouvé. Et je tiens à préciser que ma caméra est à zéro de rotation sur tous les axes.
Zoltan_ => Essaye de le réinstaller si ce n'est pas déjà fait. Lance en mode administrateur. Et sinon quel est ton système d'exploitation ?
Déjà réinstaller une fois, en mode admin ça marche quand même pas et mon système d'exploitation c'est Windows (10)
Bonsoir, je fais en ce moment même un test de jeu en ligne en 3D sur unity qui est très simple disons le mais j'ai quelque problèmes. En effet, lorsque l'ont fait un jeu en ligne sur unity, nous devons nous adapté au Networking de se dernier donc je me suis adapter seul bémols... Aucune collision n'est faite entre mon joueur ( joueur = capsule) et un cube en guise de mur... Pourtant ces deux la possèdent un Network Identity ainsi qu'un boxCollider Sans le IsTrigger cocher alors je ne comprend pas... Le joueur passe à travers quoi que je fasse...
Le script du joueur (qui au passage possède d'autre truc inutile auquel il ne faut pas faire attention):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class PlayerController : NetworkBehaviour
{
public GameObject bulletPrefab;
public Transform bulletSpawn;
void Update ()
{
if (!isLocalPlayer)
{
return;
}
<u><u> var x = Input.GetAxis("Horizontal") * Time.deltaTime * 200.0f;
var z = Input.GetAxis("Vertical") * Time.deltaTime * 6.0f;
transform.Rotate(0, x, 0);
transform.Translate(0, 0, z);</u></u>
if (Input.GetKeyDown(KeyCode.Space))
{
CmdFire();
}
}
[Command]
void CmdFire()
{
//Création de la balle à partir de la prefab "Bullet"
var bullet = (GameObject)Instantiate(
bulletPrefab,
bulletSpawn.position,
bulletSpawn.rotation);
// Ajout de la velocité à la balle
bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 15;
// Faire apparaitre la balle sur les clients
NetworkServer.Spawn(bullet);
}
public override void OnStartLocalPlayer()
{
GetComponent<MeshRenderer>().material.color = Color.blue;
}
private void OnCollisionEnter(Collision collision)
{
}
}
La ligne souligné(normalement) est celle pour pouvoir bouger/Controller le joueur.
J'espère que vous saurez m'aidez je vous en serez très reconnaissant...!!
Donc le problème: Pouvoir faire en sorte (en prenant en compte que c'est en ligne) que mon joueur s'arrête, soit bloquer/stopper, lors d'une collision
Merci!!
Salut
Je fais un petit jeu ou le but c'est que deux magiciens s'affrontent en dessinant des sortileges avec leur souris.
Toute la partie reconnaissance de dessins est faite et maintenant il faut que je fasse un système pour que les joueurs aient un retour visuel de ce qu'ils dessinent.
Du coup j'ai un canvas sur lequel j'ai mis un objet qui a un Trail renderer et qui suit le souris. Mais cela ne marche que dans mon Scene View et pas en jeu.
Voici le code qui gère cette partie
https://pastebin.com/04fJVmDF
Hello j'aimerai coder une architecture multijoueur avec matchmzking sur unity pour un jeu 2 d comment faire et par ou commencer ( je parle pas des algo mais des techno et des plugin à utilisé pour y arriver ) merci
Hello tout le monde,
Jai créé un site où un utilisateur est authentifié et je veux créer un jeux unity avec webgl afin d'inclure mon jeu dans mon site !
Seulement je voudrai que le jeu sache qui est l'utilisateur donc comment je peux envoyer les identifiants de mon utilisateurs au jeu afin de pouvoir sauvegarder les scores !
Ou bien le problème inverse comment puis je une fois la partie terminé envoyer à mon JavaScript le score que l'utilisateur viens de faire !
Est ce possible ?
Le 22 décembre 2017 à 08:47:07 SuperNG1Chuck a écrit :
Hello tout le monde,
Jai créé un site où un utilisateur est authentifié et je veux créer un jeux unity avec webgl afin d'inclure mon jeu dans mon site !
Seulement je voudrai que le jeu sache qui est l'utilisateur donc comment je peux envoyer les identifiants de mon utilisateurs au jeu afin de pouvoir sauvegarder les scores !Ou bien le problème inverse comment puis je une fois la partie terminé envoyer à mon JavaScript le score que l'utilisateur viens de faire !
Est ce possible ?
https://docs.unity3d.com/560/Documentation/Manual/webgl-interactingwithbrowserscripting.html