[DB]comment créer un tir dupliqué ?

Pour les scripts écrits en C#
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
Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

[DB]comment créer un tir dupliqué ?

Message par Kaloverian » 25 Mars 2019 02:35

bonjour,

Je commence un projet simple sur Unity :une cube(projectile) qui débute par une trajectoire rectiligne.
Une fois lançé l'animation,comment programmer ceci de façon à ce qu'à chaque appui sur une touche D(par exemple),le cube se duplique en déviant d'un angle 30° par exemple?
cf image jointe:
tir dupliqué.png
tir dupliqué.png (6.04 Kio) Consulté 2550 fois
merci de votre aide
Dernière édition par Kaloverian le 29 Mars 2019 15:19, édité 2 fois.

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: [DB]comment créer un tir dupliqué ?

Message par Kaloverian » 29 Mars 2019 15:15

j'ai essayé ce script C# dont le but est qu'à chaque appui de la touche D du clavier,le cube se duplique
Mais ce code juste ne répond au but cherché !

Code : Tout sélectionner


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cube : MonoBehaviour

{



	public float moveSpeed = 10f;
	public Transform Cube;
	public Transform Cube2;

	// Use this for initialization
	void Start()
	{
		Instantiate (Cube, new Vector3 (2.0F, 0, 0), Quaternion.identity);
	}

	void Update()
	{

	
		transform.Translate(Time.deltaTime,0,0);

		if (Input.GetKeyDown(KeyCode.D))

			Instantiate (Cube2, new Vector3 (2.0F,0,2.0F), Quaternion.identity);
	}



}
Pourquoi mon but n'est réalisé à travers ce code?
Peut-on m'aider?

merci

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]comment créer un tir dupliqué ?

Message par boubouk50 » 29 Mars 2019 15:39

Je ne sais pas ce que tu instancies, mais tu devrais cloner un prefab qui contient ton cube et son script pour que la duplication soit complète. Ainsi, à l'appui suivant, les 2 cubes se dupliqueront, etc...
Fais attention à la position de départ, tu devrais plutôt utiliser celle du parent plutôt qu'une donnée en dur.
Il te faudra aussi gérer les trajectoires, pour l'instant, il vont tous dans la même direction.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: [DB]comment créer un tir dupliqué ?

Message par Kaloverian » 31 Mars 2019 17:20

j'ai réussi en C#à partir d'un cube animé de le dupliquer(clone) selon une autre trajectoire en appuyant sur une touche du clavier spécifique

Ma question,pour aller plus loin,est donc la suivante:
je cherche explication ou tuto montrant comment en c#,pour chaque cube cloné apparaissant seulement au cours de l'animation et pas dans la hiérarchie,leur ajouter des transformations(transform.Translate)ou leur attribuer un script comme j'ai pu le faire initialement sur les 2 seuls cubes de la hiérarchie
ou
Comment lors du playgame,pour chaque cube cloné à l'appui d'une touche, les faire naître définitivement dans la hiérarchie de Unity?
ou
Comment scripter un objet instancié dans un script?

merci de votre aide

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]comment créer un tir dupliqué ?

Message par boubouk50 » 01 Avr 2019 09:29

Je ne peux que me répéter: il te faut créer un prefab qui contiendra tout ce dont tu as besoin (meshFilter, scripts, etc). Et ce sera cet objet que tu instancieras. La fonction Instantiate () te permet de gérer la hiérarchie directement en lui donnant un parent en paramètre.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: [DB]comment créer un tir dupliqué ?

Message par Kaloverian » 09 Avr 2019 02:08

1)j'instancie le prefab comme ceci ?:
a)prefab_clone=Instantiate(prefab,origine.position,origine.rotation);
ou comme ceci?:
b)prefab=Instantiate(prefab_clone,origine.position,origine.rotation);

2)Le prefab crée dans la hiérarchie avec son script dans l'inpector,je le duplique et le met en child à ce même prefab.
Est-ce cela?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB]comment créer un tir dupliqué ?

Message par boubouk50 » 09 Avr 2019 09:09

Tout est écrit dans la doc. Je ne te la donne pas pour que je te la lise... X|
Description
Clones the object original and returns the clone.

Donc a)

Je ne sais pas ce que tu entends par prefab quand tu l'écris. Un prefab est un objet prédéfini par d'autres objets. Il n'est pas forcément dans la scène. Une fois créé, tu fais ce que tu veux du clone. Si tu veux le mettre en enfant d'un autre, tu peux. Tu peux même le faire directement dans la fonction d'instanciation.

Code : Tout sélectionner

public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent); 
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »