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).
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).
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);
}
}
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.
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. :)
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à –
Merci, je vais essayer. – ssuppal
Ou à unityanswers, un SO spécifiquement pour l'unité: http://answers.unity3d.com/ – luqui