2010-08-19 25 views
0

Comment créer une copie d'un objet lors d'un clic de souris dans Unity3D?Créer une copie d'un objet de jeu

En outre, comment pourrais-je sélectionner l'objet à cloner pendant l'exécution? (sélection de la souris préférable).

+0

Vous obtiendrez probablement une meilleure réponse sur gamedev (toujours en version bêta) http://gamedev.stackexchange.com/ Il ya beaucoup d'utilisateurs de l'unité là –

+0

Merci, je vais essayer. – ssuppal

+0

Ou à unityanswers, un SO spécifiquement pour l'unité: http://answers.unity3d.com/ – luqui

Répondre

4
function Update() { 

    var hit : RaycastHit = new RaycastHit(); 
    var cameraRay : Ray = Camera.main.ScreenPointToRay(Input.mousePosition); 

    if (Physics.Raycast (cameraRay.origin,cameraRay.direction,hit, 1000)) { 
     var cursorOn = true; 
    } 

    var mouseReleased : boolean = false; 

    //BOMB DROPPING 
    if (Input.GetMouseButtonDown(0)) { 

     drop = Instantiate(bomb, transform.position, Quaternion.identity); 
     drop.transform.position = hit.point; 

     Resize(); 

    } 
} 

function Resize() { 
    if (!Input.GetMouseButtonUp(0)) { 
      drop.transform.localScale += Vector3(Time.deltaTime, Time.deltaTime, 
               Time.deltaTime); 
      timeD +=Time.deltaTime; 
    } 
} 

Et vous voulez que cela se produise sur le parcours de nombreux appels à mettre à jour:

function Update() { 
    if(Input.GetMouseButton(0)) { 
     // This means the left mouse button is currently down, 
     // so we'll augment the scale    
     drop.transform.localScale += Vector3(Time.deltaTime, Time.deltaTime, 
              Time.deltaTime); 
    } 
} 
0

La façon la plus simple (en C#) serait quelque chose comme ceci:

[RequireComponent(typeof(Collider))] 
public class Cloneable : MonoBehaviour { 
    public Vector3 spawnPoint = Vector3.zero; 

    /* create a copy of this object at the specified spawn point with no rotation */ 
    public void OnMouseDown() { 
     Object.Instantiate(gameObject, spawnPoint, Quaternion.identity); 
    } 
} 

(La première ligne s'assure qu'il y a un collisionneur attaché à l'objet, il est nécessaire de détecter le clic de la souris)

Ce script devrait fonctionner tel quel, mais je ne l'ai pas encore testé, je le réparerai si ce n'est pas le cas.

0

Si votre script est attaché à un gameobject (par exemple, une sphère), alors vous pouvez le faire:

public class ObjectMaker : MonoBehaviour 
{ 
    public GameObject thing2bInstantiated; // This you assign in the inspector 

    void OnMouseDown() 
    { 
     Instantiate(thing2bInstantiated, transform.position, transform.rotation); 
    } 
} 

Vous donnez instancier() trois paramètres: quel objet, quelle position, comment est-il tourné .

Ce script fait instancier quelque chose à la position exacte & rotation du GameObject auquel ce script est attaché. Souvent, vous devrez retirer le collisionneur du GameObject, et le corps rigide s'il y en a un. Il existe différentes façons de créer des choses, donc si celui-ci ne fonctionne pas pour vous, je peux donner un exemple différent. :)