Unity - остановить движение камеры по оси Y при прыжке - PullRequest
0 голосов
/ 10 июля 2020

Как сказано в названии. Это должно быть в заявлении "else". Камера по-прежнему должна догонять ось X / Z, но не ось Y при прыжке. Заранее спасибо!

using System.Collections;
using UnityEngine;

public class CameraFollow : MonoBehaviour
{

    public PlayerController otherScript;
    public Transform target;
    public float smoothSpeed = 0.125f;
    public Vector3 offset;

    void FixedUpdate()
    {
        if(otherScript.isGrounded == true)
        { 
        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
        transform.position = smoothedPosition;

        transform.LookAt(target);
        }
        else
        {

        }
    }
}

1 Ответ

0 голосов
/ 10 июля 2020

Один из вариантов - проверить, не заземлен ли он, а затем просто не изменять компонент y в transform.position:

using System.Collections;
using UnityEngine;

public class CameraFollow : MonoBehaviour
{

    public PlayerController otherScript;
    public Transform target;
    public float smoothSpeed = 0.125f;
    public Vector3 offset;

    void Update()
    {
        Vector3 desiredPosition = target.position + offset;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, 
                smoothSpeed);

        if(!otherScript.isGrounded)
        { 
            smoothedPosition.y = transform.position.y;
        }
        
        transform.position = smoothedPosition;
        transform.LookAt(target);
    }
}

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

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