Есть ли способ повернуть объект, который является дочерним по отношению к родительскому объекту с аниматором? - PullRequest
0 голосов
/ 07 августа 2020

Аниматор заставляет объект вращаться, поэтому скрипт, который я использую с raycast, не работает. Только если я отключу аниматор, тогда, когда raycast попадет в элемент, голова персонажа будет вращаться и смотреть на элемент. аниматор все еще работает?

Предмет обнаружен, но голова игрока не вращается, глядя на предмет

Скрипт, который прикрепляется к проигрывателю:

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

public class Interactable : MonoBehaviour
{
    public Transform objToRotateLookAT;

    private bool raycastSucceed;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    void FixedUpdate()
    {
        int layerMask = 1 << 8;

        RaycastHit hit;
        // Does the ray intersect any objects excluding the player layer
        if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
        {
            if (!raycastSucceed)
                Debug.Log("Did Hit");
            raycastSucceed = true;
            Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.red);

            Vector3 relativePos = hit.transform.position - objToRotateLookAT.position;

            // the second argument, upwards, defaults to Vector3.up
            Quaternion rotation = Quaternion.LookRotation(relativePos, Vector3.up);
            objToRotateLookAT.rotation = rotation;
        }
        else
        {
            if (raycastSucceed)
                Debug.Log("Did not Hit");
            raycastSucceed = false;
            Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 1000, Color.yellow);
        }
    }
}
  • Голова игрока поворачивается лицом к обнаруженному элементу, только если аниматор отключен. Есть ли способ сохранить активный аниматор, а также повернуть голову лицом к обнаруженному объекту?

1 Ответ

1 голос
/ 08 августа 2020

Ну, вы не можете сделать это в аниматоре Player, потому что вы его отключили. Но вы можете изменить его вращение в другом игровом объекте. Например, вы можете поместить GameObject HeadManager с Animator внутри. И всякий раз, когда вы хотите повернуть голову, вы можете просто сделать Bool в аниматоре HeadManager.

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

https://docs.unity3d.com/ScriptReference/Component.GetComponentInChildren.html

Вы можете проверить это получить детский аниматор.

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