[Unity] Chap03. 스크립트 작성하기
3-1. 스크립트로 게임 오브젝트 조작하기 유니티에서는 C#을 사용함 PlayerController라는 이름의 C# script 생성 후 컴포넌트 추가 Player Asset 폴더와 인스펙터 뷰에 스크립트가 존재하는 것을 볼 수 있음
mooni-123.tistory.com
Chap03까지 진행 후 1차 스터디를 진행하였다.
근데 갑자기 호기심 대결의 현장 펼쳐짐.
누군가는 오디오 에셋을 넣고 누군가는 닉네임을 달고 어쩌구 이게 맞나...
아무튼 나는 저번에 작성했던 점프 기능을 고쳐보았다.
if (jump)
{
Debug.Log("Jump!!");
/*transform.position = new Vector2(currentPosition.x, currentPosition.y + 0.5f); // 처음 시도했던 점프*/
rbody.AddForce(Vector2.up * 5, ForceMode2D.Impulse); //수정한 코드
}
→ 전에는 현재 X축에서 Y만 수정하여 위에서 떨어트리는 말도안되는 점프였는데 AddForce로 점프를 완성해보았다.
→ 여기서 또 문제 발생 지면에 닿아있지 않아도 스페이스를 누르면 점프를 해서 끝도 없이 올라갈 수 있다. 다음 스터디까지 고쳐올 수 있기를,,,
* AddForce(힘의 방향 * 힘, 힘의 종류);
그리고 text object인 닉네임을 플레이어의 자식 object로 넣어서 데리고 다녀봄
근데 플레이어랑 같이 좌우반전이 되는 문제 발생
public class PlayerController : MonoBehaviour
{
Rigidbody2D rbody;
GameObject text; //자식 오브젝트를 담을 변수
float axisH = 0.0f;
void Start()
{
rbody = this.GetComponent<Rigidbody2D>();
text = GameObject.Find("Text"); //시작시 Text라는 이름을 가진 오브젝트를 찾음
}
void Update()
{
axisH = Input.GetAxisRaw("Horizontal");
if (axisH > 0.0f)
{
/*Debug.Log("오른쪽 이동");*/
transform.localScale = new Vector2(1, 1);
text.transform.localScale = new Vector2(1, 1); //text에 localScale값을 조정해 부모 오브젝트의 좌우반전 설정을 무마시킴
}
else if(axisH < 0.0f)
{
/*Debug.Log("왼쪽 이동");*/
transform.localScale = new Vector2(-1, 1);
text.transform.localScale = new Vector2(-1, 1); //얘도 마찬가지!
}
}
}
→ 사실.... 얘도.... 문제가 좀 있음... text를 플레이어에 잘고정시켜 놓는 방법을 다시 찾아야겠다.
'Unity' 카테고리의 다른 글
[Unity] Chap05. 버튼과 UI 만들기 (0) | 2024.03.07 |
---|---|
[Unity] Chap04. 사이드뷰 게임의 기본 시스템 만들기 (1) | 2024.03.07 |
[Unity] Chap03. 스크립트 작성하기 (2) | 2024.02.26 |
[Unity] Chap02. 유니티로 첫 게임 만들기 (2) | 2024.02.26 |
[Unity] Chap01. 게임 개발과 유니티를 알아보자 (2) | 2024.02.26 |