티스토리 뷰

유니티3D에서!

맵이 있고!

캐릭터 모델이 있으면!

캐릭터컨트롤러 컴포넌트 추가하고!

이 밑의 스크립트를 입맛에 맞게 추가하시면

화살표 및 W,A,S,D 키와 스페이스 바를 통해서

움직임을 구현합니다.

이 때, 스피드와 점프 속도 등은 알아서 구현해주세요.

중력적용입니다.


아 cc는 인스펙터창에서 캐릭터컨트롤러 스크립트를 할당해줘야합니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Hero : MonoBehaviour {
    [SerializeField]
    CharacterController cc;
 
    public float speed = 3.0F;
    public float jumpSpeed = 4.0F;
    public float gravity = 9.81F;
    private Vector3 moveDirection = Vector3.zero;
    void Update()
    {
        if (cc.isGrounded)
        {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            if (Input.GetButton("Jump"))
                moveDirection.y = jumpSpeed;
 
        }
        moveDirection.y -= gravity * Time.deltaTime;
        cc.Move(moveDirection * Time.deltaTime);
    }
}
 
cs



Move메서드 대신에 SimpleMove를 쓰는 경우도 있다.

사용법은 훨씬 쉽다. 중력 자체가 자동 적용이며,

Move가 경사면에서 미끄러지며 이동하는데 반해 SimpleMove는 웬만하면 방향을 유지하려고 하는 힘이 강하다.


근데 점프가 곤란한 것 같으니

간단한 게임이 아니라면 Move를 쓸 것 같다. 아마듀

댓글
최근에 올라온 글
Total
Today
Yesterday
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31