250428

lililllilillll·2025년 4월 28일

개발 일지

목록 보기
155/350

✅ What I did today


  • Unreal Engine Learning
  • Prototyping
  • Art Practice : Drawing


💡 Prototyping


using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerMove : MonoBehaviour
{
    CharacterController cc;
    [SerializeField] InputActionReference mv;
    [SerializeField] GameObject planet;
    [SerializeField] float fallSpeed;
    [SerializeField] float moveSpeed;
    [SerializeField] float rotateSpeed;
    float verticalVel;

    void Start()
    {
        cc = GetComponent<CharacterController>();
    }

    void Update()
    {
        Fall();
        Rotate();
        Move();
    }

    private void Fall()
    {
        if (cc.isGrounded) { verticalVel = -2f; }
        else verticalVel -= fallSpeed * Time.deltaTime;
    }

    private void Rotate()
    {
        Vector3 upDir = (transform.position - planet.transform.position).normalized;
        Quaternion targetRot = Quaternion.FromToRotation(transform.up, upDir) * transform.rotation;
        transform.rotation = targetRot;
    }

    private void Move()
    {
        Vector2 movement = mv.action.ReadValue<Vector2>();
        Vector3 move = new Vector3(movement.x, 0, movement.y).normalized;
        move.y = verticalVel;
        move = transform.TransformDirection(move);
        cc.Move(move * Time.deltaTime * moveSpeed);
        Debug.DrawRay(transform.position, move, Color.red, 2f);
    }
}

실패 (계속 원점으로 되돌아가려고 함. 수직 방향까지 가면 아예 안 움직임.)

원인 : Character Controller의 collider는 회전되지 않음

    void Update()
    {
        Fall();
        Rotate();
        Move();
    }

    private void Fall()
    {
        verticalVel = -10f;
        // else verticalVel -= fallSpeed * Time.deltaTime;
    }

    private void Rotate()
    {
        Vector3 upDir = (transform.position - planet.transform.position).normalized;
        Quaternion targetRot = Quaternion.FromToRotation(transform.up, upDir) * transform.rotation;
        transform.rotation = targetRot;
    }

    private void Move()
    {
        Vector2 movement = mv.action.ReadValue<Vector2>();
        Vector3 move = new Vector3(movement.x, 0, movement.y).normalized;
        move = transform.TransformDirection(move) * moveSpeed;
        move += verticalVel * transform.up;
        rb.linearVelocity = move;
        // Debug.DrawRay(transform.position, move, Color.red, 2f);
    }

rb 기반으로 변경

zittering 발생하여 cinemachine brain update mode 변경하여 해결

🎨 Art Practice : Drawing




profile
너 정말 **핵심**을 찔렀어

0개의 댓글