Sterowanie postacią w Unity

0

Witam. Chcę napisać kod sterowania postacią w Unity. Znalazłem poradnik w internecie jak napisać i teraz mam problem bo postać/kamera wariuje. Nie przyciskam nic. Oto filmik:

FILMIK

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

public class ThirdPersonCam : MonoBehaviour
{
    [Header("References")]
    public Transform orientation;
    public Transform player;
    public Transform playerObj;
    public Rigidbody rb;

    public float rotationSpeed;

    private void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    private void Update()
    {
        Vector3 viewDir = player.position = new Vector3(transform.position.x, player.position.y, transform.position.z);
        orientation.forward = viewDir.normalized;

        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");
        Vector3 inputDir = orientation.forward * verticalInput + orientation.right * horizontalInput;

        if (inputDir != Vector3.zero)
            playerObj.forward = Vector3.Slerp(playerObj.forward, inputDir.normalized, Time.deltaTime * rotationSpeed);

    }
}
2

Jeśli zrobiłeś wszystko zgodnie z poradnikiem i tak działa, to słaby ten poradnik...
To nie kamera wariuje, tylko obiekt gracza, któremu cały czas zmieniasz rotację.
Zmiana pola playerObj.forward określa, w którą stronę obrócony jest gracz.

  1. Na początek wystarczyłoby gdybyś w edytorze przypiął kamerę do obiektu gracza. Gracz jest parentem kamery.
    Potem wystarczy przesuwać i obracać gracza w odpowiednim kierunku. Kamerą się w ogóle nie przejmujesz. Nie potrzeba do tego takich kosmicznych obliczeń, jakie pokazałeś.
  2. Do poruszania graczem w świecie 3D użyj komponentu CharacterController.
    W kodzie stosujesz jego metodę Move: https://docs.unity3d.com/ScriptReference/CharacterController.Move.html
  3. Jak będziesz potrzebował żeby kamera reagowała na przeszkody i nie była taka sztywna jak ta na stałe przyczepiona do gracza, to polecam skorzystać z pakietu Cinemachine.
0

Otóż to korzystam z Cinemachine, nie napisałem. Naprawdę dobry moduł. A w tym poradniku co pokazałeś trzeba jakiś plik Arrow Projectile..

Edit: Dzięki ! Skorzystałem z innego poradnika i działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1