728x90
Input.GetAxis()와 Translate()를 사용한 이동
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
void Update()
{
float mH = Input.GetAxis("Horizontal");
float mV = Input.GetAxis("Vertical");
Vector3 mov = new Vector3(mH*Time.deltaTime, 0f, mV*Time.deltaTime);
transform.Translate(mov);
}
}
CharacterController와 Move()를 사용한 이동
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class moveCC : MonoBehaviour
{
CharacterController cc;
// Start is called before the first frame update
void Start()
{
cc = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
float mH = Input.GetAxis("Horizontal");
float mV = Input.GetAxis("Vertical");
Vector3 mov = new Vector3(mH * Time.deltaTime, 0f, mV * Time.deltaTime);
cc.Move(mov);
}
}
CharacterController을 사용하면 오브젝트 앞에 장애물(계단)이 있을 때 올라가게 만들 수 있다. (일반 move함수를 사용하려면 코드가 매우 복잡해짐) 즉, CC에 이미 내장함수 및 옵션들이 적용되어 있기 때문에 다른 오브젝트들과 상호작용하는 복잡한 이동 컨트롤에 유리하다.
NavMeshAgent를 사용한 이동
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class moveNavi : MonoBehaviour
{
public Transform targetTrans;
NavMeshAgent agent;
// Start is called before the first frame update
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
// Update is called once per frame
void Update()
{
agent.SetDestination(targetTrans.position);
}
}
- Cube에 NavmeshAgent를 추가
- Window - AI - Navigation 추가 후 Ground 선택 - Object - Navigation Static/walkable & Bake
- Block 선택 - Object - Navigation Static/not walkable & Bake
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RayPoint : MonoBehaviour
{
public Transform PointObj;
Ray ray;
RaycastHit hit;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
PointObj.position = hit.point;
}
}
}
}
포인터의 위치를 표시해줄 Sphere을 생성하고, 포인터의 현재 위치를 표시하는 빈 오브젝트(Create empty) 생성 및 스크립트를 연결해주면 된다. public된 PointObj에 Sphere을 매핑 후 플레이해보면 마우스 클릭 지점에 타겟 지점 생성, Cube가 길을 찾아오게 된다.
728x90
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
유니티 Scene 상에서 Fade In&Fade Out 연출효과 구현하기(+ 메타 퀘스트 VR 환경에서 FI/FO 구현) (0) | 2021.10.13 |
---|---|
VR 메타 퀘스트 컨트롤러 버튼 체크 및 오브젝트 이동을 위한 소스 코드 (0) | 2021.10.08 |
유니티 Animation 기능을 사용하여 카메라 이동 구현하기 (0) | 2021.10.07 |
유니티 Animation 기능을 사용하여 시계 애니메이션 만들기 (0) | 2021.10.07 |
[VR 개발]360 VR Capture를 통해 360 Panoramic 이미지 만들기 및 이미지 (0) | 2021.10.01 |