Есть ли способ применить восходящую силу к управляемому игроком риджбидю после успешного столкновения? - PullRequest
0 голосов
/ 15 апреля 2020

Я довольно новичок в единстве, и у меня возникают проблемы с тем, чтобы персонаж игрока двигался вверх после успешного столкновения с головой врага. Я пробовал несколько типов getcomponent.gameObject с vector3.AddForce, но мне не повезло. Я помещаю код в неправильную строку? Я что-то упускаю тривиально? Я вставлю свой код ниже - любая помощь будет оценена.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;


public class PlayerHandlerImproved : MonoBehaviour {
    public float forceApplied; 


    // Use this for initialization
    void Start () {


    }

    // Update is called once per frame
    void FixedUpdate () {

    }
    void OnCollisionEnter(Collision collision)
    {
        if (collision.collider.gameObject.tag == "EnemyHead")

        {   

            if (transform.position.y >= collision.collider.transform.position.y)
            {
                collision.gameObject.GetComponent<Rigidbody>().AddForce (0, forceApplied, 0);
                Destroy(collision.collider.transform.parent.gameObject);
                Destroy(collision.collider.gameObject);
                GameManager.score += 100;
            }


        }
        else if (collision.collider.gameObject.tag == "EnemyBody")

        {
            GameManager.lives -= 1;
            Debug.Log(GameManager.lives);
            if (GameManager.lives == 0)
            {
                GameManager.over = true;
                Time.timeScale = 0;
            }
            else
            {
                SceneManager.LoadScene("game on level1");
            }
            //this part is just for game score purposes.
        }

    }

}

1 Ответ

1 голос
/ 15 апреля 2020

Ваша ошибка в том, что вы применяете силу к collision, который в данном случае является врагом, а не вашим игроком. Изменить:

collision.gameObject.GetComponent<Rigidbody>().AddForce(0, forceApplied, 0);

на

GetComponent<Rigidbody>().AddForce(0, forceApplied, 0);

Более подробную информацию о OnCollisionEnter можно найти здесь .

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