Пробуди твердое тело в единстве - PullRequest
1 голос
/ 06 апреля 2019

Хорошо - я супер новичок в Unity (просто учусь для удовольствия) и хотел, чтобы вражеский куб упал, когда игрок находится в пределах 15 на Z. Я могу заставить функцию твердого тела вражеского куба «спать» но когда я доберусь до 15 или меньше, он не проснется и не начнет падать. Можете ли вы помочь мне с моим кодом? Debug.Log говорит мне, что я хочу, когда я запускаю его, но жесткое тело не реактивируется на кубе врага. Извините, если это супер простой запрос ... просто пытаюсь учиться!

     using UnityEngine;

public class activatefall : MonoBehaviour
{
    public Transform Player;
    public Rigidbody rbgo;
    private float coolnumber;
    private float badtogood;

    // Update is called once per frame
    void FixedUpdate()
    {
        coolnumber = transform.position.z;
        badtogood = coolnumber - Player.position.z;
        Debug.Log(badtogood);

        if (badtogood < 15f)
        {
            rbgo.WakeUp();
            Debug.Log("Falling!");
        }
        else
        {
            rbgo.Sleep();
            Debug.Log("Frozen");
        }

    }
}

1 Ответ

1 голос
/ 06 апреля 2019

Если вы хотите, чтобы Rigidbody был остановлен, а затем упал, вы можете просто использовать rbgo.useGravity = false/true.

Однако есть и другие способы, вы можете поиграть с RigidbodyConstraints , делая Rigidbodyзаморозить по оси Y и затем удалить это ограничение.

Если вы хотите полностью остановить Rigidbody после его перемещения, вы можете просто сделать rbgo.constraints = RigidbodyConstraints.FreezeAll или rbgo.velocity = Vector3.zero (и затем, если вы хотите отключить гравитацию, вы делаете rbgo.useGravity = false.

Вы также можете использовать transform.position и / или transform.Translate, если не хотите иметь дело с самим Rigidbody.

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