У меня есть игрок, и я хотел бы бросить предмет, который «прикреплен» к игроку. Проблема в том, что у обоих есть компоненты 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);
}
Итак, вопрос в том, как я могу сделать эту работу?
Спасибо. Но после того, как я выбросил свечу (и, скажем так, она лежит на земле), игрок может столкнуться с ней, чтобы снова собрать ее. Как это сделать? – Gabe
Вы можете добавить два пустых объекта gameObjects в качестве дочерних элементов gameObject для свечи. Первый имеет коллайдер, который сталкивается с землей, но не с игроком. Второй имеет триггерный коллайдер, который сталкивается с игроком и устанавливает 'canThrowCandle' – maZZZu