오늘 포스트는 플레이어 스프라이트 오브젝트가 이동시 신규생성한 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#에서 핸들링하는 방법을 학습해 보겠습니다.
댓글 영역