상세 컨텐츠

본문 제목

유니티엔진으로 만든 2D게임 분석하기_3

카테고리 없음

by 김일국 2020. 12. 6. 18:04

본문

오늘 포스트는 플레이어 스프라이트 오브젝트가 이동시 신규생성한 2D스프라이트 StopItem 오브젝트에 충돌시 나타나는 효과를 주어 봤습니다.

내용은 인프런 강의 [따라하면서 배우는 고박사의 유니티 기초] 를 참조 했습니다.

충돌전 Player스프라이트 오브젝트의 Color가 white (아래)

충돌후 Player스프라이트 오브젝트의 Color가 gray로 변경된 것을 확인(아래)

해당 C#스크립트 컴포넌트 수정: 이름 Movement2D 를 MovementPlayer 로 파일명과 클래스명 모두 변경 후 충돌 코딩 추가(아래)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovementPlayer : MonoBehaviour
{
    private float moveSpeed = 5.0f;//이동속도
    private Vector3 moveDirection = Vector3.zero;//이동방향
    private Rigidbody2D rigid2D;
    private SpriteRenderer spriteRenderer;
    private Color color=Color.white;
    private void Awake()//초기 1회만 실행
    {
        //새로운위치 = 현재위치+(방향*속도)
        //transform.position = transform.position + new Vector3(1, 0, 0) * 1;
        //transform.position+=Vector3.right*1;
        rigid2D = GetComponent<Rigidbody2D>();
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
    // Start is called before the first frame update
    void Start()
    {
    }
    // Update is called once per frame
    void Update()
    {
        //단축키로 게임캐릭터 이동시키기
        //Horizontal: left(Negative=-1), right(Positive=+1)
        //Vertical: down(Negative=-1), up(Positive=+1)
        float x = Input.GetAxisRaw("Horizontal");//좌우
        float y = Input.GetAxisRaw("Vertical");//상하
        //이동방향 설정
        moveDirection = new Vector3(x, y, 0);
        //새로운위치=현재위치+(방향*속도)
        //transform.position+=moveDirection*moveSpeed*Time.deltaTime;
        rigid2D.velocity = new Vector3(x, y, 0) * moveSpeed;
    }
    //충돌이벤트 함수 충돌이 일어나는 순간 1회 호출
    private void OnCollisionEnter2D(Collision2D collision)
    {
        spriteRenderer.color = Color.gray;
    }
    //충돌이 종료되는 순간 1회 호출
    private void OnCollisionExit2D(Collision2D collision)
    {
        spriteRenderer.color = color;
    }
}

Ps.  다음 포스트에서는 게임오브젝트 함수로 생성해서 C#에서 핸들링하는 방법을 학습해 보겠습니다.

댓글 영역