CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

demande d'aide unity script

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 18:48:55

bonjour a tous.
alors voila je vous expose mon probleme.
je suis en train de creer un jeu d horreur sur unity 4.
Donc j ais mon enemy, mon first person controller, ma map (1 seule pour le moment),
tout fonctionne bien. seulement pour les moments ou le monstre apparait j utilise des triggers.

Mais j aimerais faire apparaitre mon monstre aleatoirement sur la map a plusieurs intervalle de temps
par exemple toute les 2 minute le monstre apparait.
Et j aimerais qu il apparaisse devant le joueur.
Dans le genre HYLOPHOBIA pour les connaisseurs.

Donc je presume qu il faut utiliser un script pour cela mais la je galere rien qu'a trouver un script sur le net.

Si quelqu un pouvait me donner un script ou bien me diriger vers un tuto pour creer ce genre de script.

en esperant avoir ete compris.
par avance merci a tous

Poneymove
Poneymove
Niveau 7
18 avril 2013 à 19:31:32

Basiquement, il suffit de récupérer les positions du personnage, et d'avancer un peu le monstre sur l'axe où regarde le personnage.
Tu as des connaissances en script ou aucune ? :( .

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 19:43:53

je commence a apprendre mais bon......
on va dire que je n'en ai aucunes.

jack_olondon
jack_olondon
Niveau 2
18 avril 2013 à 19:52:28

Pour l'apparition de ton monstre sur la map tu le veux a des endroits précis de la map? ou n'importe où sur la map? ça peut changer la donne.

Pour le spawn du monstre devant le joueur, je mettrais un gameObject enfant du first person controller devant la vue du joueur, et c'est le script qui décide quand il apparait sur point.

Pour le script ce n'est pas très compliqué, l'aléatoire est obtenu par la fonction Random (Random.range(0,5) -> choisi un chiffre entre 0 et 5)Si tu veux choisir l'apparition en fonction du temps tu peux remplacer 0 et 5 par des variables temps (Time.time -> temps passé depuis le lancement du jeu // Time.deltaTime -> temps que la dernière frame a mis à s'afficher, grace à ces deux variables tu peux facilement timer le spawn du monstre. et il y'en à d'autre (http://docs.unity3d.com/Documentation/ScriptRefer
ence/Time.html)

je fais une vidéo justement sur un jeu où il y à plein de spawn aléatoire, ça peut peut être t'aider :
http://youtu.be/-Ouo-racVBg

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 19:59:38

alors j'aimerais que le monstre apparaisse aléatoirement n'importe ou sur la map.

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 20:06:21

voila je voudrais faire exactement ceci.

http://www.youtube.com/watch?feature=player_detailpage&v=CAmSm1Rknpg#t=126s

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 20:13:16

car le probleme c'est que j'ais deja fait comme tu as indiqué jack_olondon

J'ais mit le monstre enfant a mon first person controller
ensuite j'ais joué sur les trigger pour le faire apparaitre.

le soucis c'est que le monstre apparait toujours devant au meme endroit et il bouge avec le joueur.

moi j'aimerais qu'il reste a l endroit ou il est apparut et disparaisse quant le joueur s'eloigne.

exactement comme sur la video que j'ais mise.

jack_olondon
jack_olondon
Niveau 2
18 avril 2013 à 20:24:02

le script d'apparition ne doit pas être attacher à un élément du first person controller, sinon ton monstre va apparaitre en tant qu'enfant du fps controller, c'est pour ça qu'il se déplace avec le joueur. Tu dois également faire en sorte que le monstre en spawnant se tourne vers le joueur(j'imagine) pour ça il y à la fonction LookAt.
Et le monstre ne doit pas être un enfant non plus il doit être entièrement à part sinon il héritera toujours des mouvements du joueur. Pour le faire disparaitre tu peux mettre un component->physics->sphere collider et tu fais un script qui check si le montre est en contact ou dans la sphére (OnTriggerEnter ou OnColiderEnter, dans une function Update() comme ça on check à chaque fps) si il ne l'est pas : hop on le vire (destroy())

remremdu31
remremdu31
Niveau 29
18 avril 2013 à 21:23:00

D'accord merci pour ces quelques precisions en tout cas si tu en a d'autres je suis preneur
Mais avec tes quelques explications je peu deja demarrer quelque chose
merci beaucoup :)

hapliniste
hapliniste
Niveau 9
18 avril 2013 à 23:50:14

sinon si le monstre ne doit pas aparaitre dans les murs par exemple, ya la possibilité de faire un script qui lance un rayon devant le joueur, regarde si il y a un impact et fait apparaitre un monstre en conséquence :ok:

Pour apprendre à coder, la doc officielle d'unity est plutôt bien foutue je trouve! (coding references sur le site, ou qqch comme ça je crois) :)

remremdu31
remremdu31
Niveau 29
19 avril 2013 à 16:43:11

oui voila je partirais plutot dans cette optique la.
un rayon autour du joueur et un script qui fait apparaitre le monstre aleatoirement.
merci pour votre aide en tout cas.
j irais voir sur la doc officielle de unity.
mais le soucis c est que moi et l anglais lol quoi.
:hap:

hapliniste
hapliniste
Niveau 9
19 avril 2013 à 19:20:01

non, je parle pas d'un rayon comme dans un cercle, mais un rayon comme un rayon laser quoi :noel:

C'est un truc très utilisé dans les JV, c'est du raycasting :ok: voilà un petit tuto pour t'aider http://www.unity3dstudent.com/2010/08/intermediate-i01-raycasting/ :)

Et essaie de t'habituer à l'anglais si tu codes, c'est vraiment très utile, presque indispensable. (et en lisant des tutos en anglais on apprend assez vite, si t'as quelques bases quoi)

remremdu31
remremdu31
Niveau 29
20 avril 2013 à 11:40:15

oui j'ais quelques base.
mais au fils du temps jebremarque que souvent les memes mot revienent donc il faut que je les apprennes.
merci pour ce tutoriel j'irais voir ça.
merci a tous en tout cas pour votre aide. :ok:
j espere vous faire partager quelque chose de potable dans quelques temps :merci:

remremdu31
remremdu31
Niveau 29
20 avril 2013 à 11:49:25

alors je vien de regarder le tuto halpiniste
tres interessant mais je ne vois pas trop comment appliquer ça a mon monstre pour qu il apparaisse devant mon joueur.
dsl je suis chiant je sais :hap:

jenaipasdenom
jenaipasdenom
Niveau 15
20 avril 2013 à 12:23:12

Perso, je ferais ça en deux étapes :

On part du principe que tu instancie ton personnage devant ton personnage à une distance SPAWN_DIST.

var spawnDir:Vector3 = transform.forward * SPAWN_DIST; // direction de ton rayon
var spawnPos:Vector3; // ce sera la position où tu instancie ton monstre

OBJECTIF NUMBER ONE - TROUVER UN ENDROIT SANS MUR :

Tu lance un rayon vers spawnDir :
var hit:RaycastHit;
if(!Physics.Raycast(spawn, Vector3.down, hit, 10))
{
spawnPos = transform.position + spawnDir; // y a rien, donc pas besoin de changer
}
else
{
spawnPos = hit.point + hit.normal;
}

Là en principe, plus de soucis de mur.

OBJECTIF NUMBER TWO : INSTANCIER LE MONSTRE AU SOL :

Maintenant, on a une position de base spawnPos où on instanciera le monstre, donc on est content. Mais le faire apparaitre au sol c'est mieux.

Si tu utilise un terrain, tu peux utiliser la méthode Terrain.activeTerrain.SampleHeight() qui te donnera le point dans l'espace correspondant au sol à l'endroit que tu lui aura fourni en entrée. En gros :

spawnPos = Terrain.activeTerrain.SampleHeight(spawnPos); // tu instancie ton monstre là, au sol du terrain

Sinon si tu bosse sur des gameObejct standard, tu peux aussi faire un Raycast vers le bas (Vector3.down) et utiliser la propriété point du RaycastHit qui te donne l'endroit où ton rayon a heurté un objet (i.e le sol).

Physics.Raycast(spawnPos, Vector3.down, hit, 10);
spawnPos = hit.point; // là où tu instancie ton monstre

Naturellement dans les deux cas il faut que le pivot de ton perso soit en bas du gameObject sinon il va se retrouver au milieu du sol. :hap:

jenaipasdenom
jenaipasdenom
Niveau 15
20 avril 2013 à 13:30:48

Petite erreur, dans la partie un c'est if(!Physics.Raycast(spawn, spawnDir, hit, 10))

jenaipasdenom
jenaipasdenom
Niveau 15
20 avril 2013 à 13:32:54

et c'est spawnPos.y = Terrain.activeTerrain.SampleHeight(spawnPos);

jenaipasdenom
jenaipasdenom
Niveau 15
20 avril 2013 à 14:16:35

Et c'est pas 10 pour le premier raycast mais SPAWN_DIST (décidément :noel: , dsl pour le quadruple poste)

remremdu31
remremdu31
Niveau 29
21 avril 2013 à 15:29:10

merci pour ton temps et toute ces informations tres precieuses en tout cas
je vais essayer de regarder avec les explications que tu m a donné :)
merci

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment