Создать копию игрового объекта - PullRequest
0 голосов
/ 20 августа 2010

Как создать копию объекта при щелчке мыши в Unity3D?

Кроме того, как выбрать объект для клонирования во время выполнения?(выбор мыши предпочтительнее).

Ответы [ 3 ]

4 голосов
/ 01 апреля 2011
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;
     }
}

И вы захотите, чтобы это происходило в течение многих обращений к Обновлению:

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 голосов
/ 22 июня 2012

Если ваш скрипт присоединен к GameObject (скажем, сфере), то вы можете сделать это:

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

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

Вы задаете Instantiate () три параметра: какой объект, какая позиция, как онrotated.

Что делает этот скрипт, так это то, что он создает что-то в точном положении и повороте GameObject, к которому присоединен этот скрипт.Часто вам нужно будет удалить коллайдер из GameObject и жесткое тело, если оно есть.Существуют различные способы, которыми вы можете создавать экземпляры, поэтому, если это не работает для вас, я могу привести другой пример.:)

0 голосов
/ 04 октября 2011

Самый простой способ (в c #) будет выглядеть примерно так:

[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);
    }
}

(Первая строка просто подтверждает, что к объекту прикреплен коллайдер, необходимо определить щелчок мыши)

Этот скрипт должен работать как есть, но я еще не тестировал его, я исправлю его, если он не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...