2015-01-21 5 views
1

У меня есть игрок, и я хотел бы бросить предмет, который «прикреплен» к игроку. Проблема в том, что у обоих есть компоненты rigidbody2D и Collider. Предмет, который я хотел бы бросить, с игроком, и он должен столкнуться с землей и т. Д. (Кроме игрока)В Unity как «бросить» спрайт с игроком, если у обоих есть rigidbody2d и коллайдеры?

Вот что я пробовал:

if (Input.GetButtonDown ("Fire1") && canThrowCandle) { 
      Candle.rigidbody2D.isKinematic = false; 

      if (faceingRight) 
       Candle.rigidbody2D.AddForce(new Vector2(400f, 400f)); 
      else if (!faceingRight) 
       Candle.rigidbody2D.AddForce(new Vector2(-400f, 400f)); 

      Candle.collider2D.enabled = true; 
      canThrowCandle = false; 
     } 

И затем, если игрок сталкивается с элементом (свечи), то с игроком снова:

void OnCollisionEnter2D(Collision2D coll){ 
     if (coll.gameObject.name == "Candle") { 
      canThrowCandle = true; 
      Candle.rigidbody2D.isKinematic = true; 
      Candle.collider2D.enabled = false; 
     } 

И код (CandleController), что контролирует положение ithem, что я хотел бы бросить:

void Update() { 
     if (GameObject.Find ("Player").GetComponent<PlayerController>().canThrowCandle) 
      transform.position = new Vector3 (player.transform.position.x, player.transform.position.y, -0.01f); 
    } 

Итак, вопрос в том, как я могу сделать эту работу?

ответ

2

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

Это можно сделать, используя столкновение layers. Просто поместите землю, игрока и свечу в разные слои. Затем отрегулируйте, чтобы оба игрока и свеча сталкивались с землей, но не друг с другом.

Если вы хотите, как триггер коллайдера и физика коллайдер быть прикрепленным к тому же геймобжектам, я думаю, вам нужно использовать ребенок геймобжекты для этого, как упоминались here.

+0

Спасибо. Но после того, как я выбросил свечу (и, скажем так, она лежит на земле), игрок может столкнуться с ней, чтобы снова собрать ее. Как это сделать? – Gabe

+0

Вы можете добавить два пустых объекта gameObjects в качестве дочерних элементов gameObject для свечи. Первый имеет коллайдер, который сталкивается с землей, но не с игроком. Второй имеет триггерный коллайдер, который сталкивается с игроком и устанавливает 'canThrowCandle' – maZZZu