커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
빗방울끼리 겹쳤을 때 충돌을 무시하려면 코드를 어떻게 수정해야 할까요?
undefined주차
북마크
댓글
4
추천
2
조회수
25
조회수
25
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


수업 내용과는 직접적인 관련이 없을 수도 있는데 빗방울 생성 시에 빗방울이 겹쳐져 있어도 서로 충돌하지 않고 그대로 수직으로 내려왔으면 좋겠습니다. 검색해보니 Physics2D.IgnoreLayerCollision(Layer1, Layer2)라는 함수가 있어서 rain의 order in layer를 2로 바꾸고 Physics2D.IgnoreLayerCollision(2, 2)로 적용시켜 보았는데 효과가 없는 것 같습니다. 혹시 이와 관련해서 해결 방법을 알려주실 수 있을까요?






작성한 코드 및 에러 메세지

rain.cs의 코드 내용입니다.

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;


public class rain : MonoBehaviour
{
    int type;
    float size;
    int score;


    // Start is called before the first frame update
    void Start()
    {
        float x = Random.Range(-2.7f, 2.7f);
        float y = Random.Range(3.0f, 5.0f);
        transform.position = new Vector3(x, y, 0);


        type = Random.Range(1, 5);
        if (type == 1)
        {
            size = 1.2f;
            score = 3;
            GetComponent<SpriteRenderer>().color = new Color(100 / 255f, 100 / 255f, 255 / 255f, 255 / 255f);
            
        }
        else if (type == 2)
        {
            size = 1.0f;
            score = 2;
            GetComponent<SpriteRenderer>().color = new Color(130 / 255f, 130 / 255f, 255 / 255f, 255 / 255f);
        }
        else if (type == 3) 
        {
            size = 0.8f;
            score = 1;
            GetComponent<SpriteRenderer>().color = new Color(150 / 255f, 150 / 255f, 255 / 255f, 255 / 255f);
        }
        else
        {
            size = 0.8f;
            score = -5;
            GetComponent<SpriteRenderer>().color = new Color(255 / 255f, 100 / 255f, 100 / 255f, 255 / 255f);
        }


        transform.localScale = new Vector3(size, size, 0);
    }


    // Update is called once per frame
    void Update()
    {
        Physics2D.IgnoreLayerCollision(2, 2);
    }


    private void FixedUpdate()
    {
        Physics2D.IgnoreLayerCollision(2, 2);
    }
    void OnCollisionEnter2D(Collision2D coll)
    {
        if (coll.gameObject.tag == "ground")
        {
            Destroy(gameObject);
        }
        else if (coll.gameObject.tag == "rtan")
        {
            Destroy(gameObject);
            GameManager.I.addScore(score);
        }
        else return;
    }
}

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴