안녕기모찌 저의 첫 글이에요
사실 유니티 인터페이스 소개 글도 네이버에 적었었는데, 조만간 여기 옮길 예정이에요 (어쩌라구요 ((((((퍽
★ 방법1 - 키보드 방향키로 움직이기 ★
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyPlayer : MonoBehaviour // 스크립트 이름 수정
{
[SerializeField]
private float moveSpeed;
private Vector3 moveDirection;
private void Update()
{
moveDirection.x = Input.GetAxisRaw("Horizontal"); //자동지정 함수명
moveDirection.y = Input.GetAxisRaw("Vertical"); //자동지정 함수명
moveDirection.z = 0f;
transform.position += moveSpeed * Time.deltaTime * moveDirection; //적용
}
}
전체 코드에요.
스크립트에 이걸 전체 복붙하고 오브젝트에 스크립트를 넣으면 돼요!
참고로 MyPlayer 는 저의 스크립트 이름이고, 쓰실때는 이 부분만 바꿔서 쓰시면 됩니다.
Horizontal과 Vertical에 대해서는 인터페이스 소개 글에서 다룰 예정이에요! 아래 링크를 클릭하시면 됩니다.
(사실 아직 안 썼음 ㅎㅎ 추가할거임용)
★ 방법2 - 마우스로 지정한 곳으로 슈슈슉 움직이기 - Lerp함수 ★
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyPlayer : MonoBehaviour
{
[SerializeField]
private float moveSpeed;
private Vector3 moveDirection;
private Vector3 moveTargetPosition;
private void Update()
{
Debug.Log("마우스 현 위치 좌표" + Input.mousePosition); //그냥 포지션 표기
if (Input.GetMouseButtonDown(0)) //아무스 좌클릭
{
moveTargetPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
moveTargetPosition.z = transform.position.z;
}
transform.position = Vector3.Lerp(transform.position, moveTargetPosition, moveSpeed * Time.deltaTime);
}
}
마우스로 클릭하면 한번에 딱! 나타나도록 이동하는게 아니라,
슝~....하는 무빙 ㅋㅋ 방법이에요
이동하는 시간은 1초로 맞춰줘 있어요. (= 짧은 거리는 느리게, 긴 거리는 더 빠르게 움직임)
lerp함수를 이용했기 때문인데, 그 설명은 다른 분들이 잘 해주셨을 거에요. 저는 거기까진 잘 몰루 ㅠ
★ 방법3 - 마우스로 클릭, 끌어다 놓기 이동하기 ★
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyPlayer : MonoBehaviour
{
private bool isSelect; //bool = true, false 값을 가짐
private void Awake()
{
isSelect = false;
}
private void Update()
{
if(isSelect)
{
Vector3 newPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newPos.z = transform.position.z;
transform.position = newPos;
}
}
private void OnMouseDown()
{
Debug.Log("해당 오브젝트가 선택 되었습니다."); //확인차 작성함
isSelect = true;
}
private void OnMouseUp()
{
Debug.Log("해당 오브젝트가 해제 되었습니다."); //생략가능
isSelect = false;
}
}
하지만 이건 그냥 스크립트만 쓰면 되는게 아니에요~!!
오브젝트 선택 -> Add Component -> Box Xollider 2D 추가 (설정 안 건드려도 됨) 해주셔야 쓸 수 있어요
★ 방법4 - 캐릭터 컨트롤러를 사용하기 ★
이어서 하신다면, 방법 3에서 추가한 Box Xollider 2D를 꼭 삭제 해주세요 (remove)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyPlayer : MonoBehaviour
{
[SerializeField]
private float moveSpeed;
private Vector3 moveDir;
private CharacterController charCont;
private void Awake()
{
if (! TryGetComponent<CharacterController>(out charCont))
Debug.Log("MyPlayer - Awake() - characterController 참조 실패"); //실패했을경우
}
private void Update()
{
moveDir.x = Input.GetAxisRaw("Horizontal");
moveDir.y = Input.GetAxisRaw("Vertical");
moveDir.z = transform.position.z;
charCont.Move(moveSpeed * Time.deltaTime * moveDir);
}
}
오브젝트 선택 -> Add Component -> Character Controller 추가
script 메뉴에서 Speed 값 꼭!!!!!!입력해야함 이거 안해서 30분 동안 질질 짜고 있었음
★ 방법4 - WASD 사용하여 움직이기 (키입력) + 한칸한칸 이동하기 ★
이번 방법은 저런거 추가할 필요 없어요
그리고 한칸한칸 그리드 단위로 움직이는데, 스무스하게 하고 싶으시다면 위의 방법들이랑 합치면 되겓져?
저는 귀찮아서 안 했지만, 제 블로그를 보고 성공하셨다면 댓글에 남겨주세요.
명예의 팡톤블로그 회원에 이름 올려드립니다♥
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyPlayer : MonoBehaviour
{
float moveDistance = 1f;
private void Awake()
{
transform.position = Vector3.zero;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.W))
transform.position = new Vector3(transform.position.x,
transform.position.y + moveDistance,
transform.position.z);
if (Input.GetKeyDown(KeyCode.S))
transform.position = new Vector3(transform.position.x,
transform.position.y - moveDistance,
transform.position.z);
if (Input.GetKeyDown(KeyCode.A))
transform.position = new Vector3(transform.position.x - moveDistance,
transform.position.y,
transform.position.z);
if (Input.GetKeyDown(KeyCode.D))
transform.position = new Vector3(transform.position.x + moveDistance,
transform.position.y,
transform.position.z);
}
}
실행하시고 방향키 누르면서 아 왜 안되냐..하..또왜!!!!!!!!!!!!!! 하지 마시고^^(는 나)
wasd 로 움직이세요 ^^ 꼭이욤
'유니티' 카테고리의 다른 글
★Unity 유니티 3D 인터페이스 소개★ (1) | 2023.08.26 |
---|---|
★Unity 유니티 기초★ 9 Slicing Sprites Unity - 2D 이미지와 타일 다루기 - 새로운 창, 반복 이미지, 타일맵(퀘스트창, 경고창 등등) (20) | 2023.08.12 |