#유니티

체리체리· 9개월

질문유니티 2D 모바일 게임 개발 공부하려면

유니티 2D 모바일 게임 개발을 공부하고 싶은데 도움될만한 서적이나 유튜브, 블로그가 있을까요? 관련해서 조언해주실 분이 아예 없어서 질문 드립니다. ㅠㅠ
258
2
0
데브게므
데브게므·2024-07-08
유니티 2D 모바일 게임 개발을 공부하기 위해 도움될 만한 서적, 유튜브 채널, 블로그를 아래와 같이 추천드립니다. [서적] "유니티 교과서 - 그림으로 이해하고 만들면서 익히는" - 길벗유니티 책으로 가장 난이도가 쉽습니다."레트로의 유니티 게임 프로그래밍 에센스 - C#으로 배우는 입문부터 4가지 게임 제작까지" - 한빛미디어기초부터 심화까지 다룹니다...

질문유니티 충돌관련 질문있습니다 충돌이 뚫리네요

제가 플레이어에 캡슐콜라이더 컴포넌트 추가하고 wall오브젝트에 box콜라이더 추가한다음에 rigidbody설정에 collision Detection도 Continuous로 해줬는데도 플레이어가 벽에 가서 비비적대면 천천히 뚫어버리는 상황이 발생하는데 해결법이 있을까요 플레이어 이동방법으론 transform.position을 증가시키는 방법으로 하였습니다. 이유를 좀 알아보니까 속도가 빨라서 그런거 같은데 이게 해결방법이 없을까요? Player 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed; float hAxis; float vAxis; bool wDown; Vector3 moveVec; Animator anim; // Start is called before the first frame update void Awake() { anim = GetComponentInChildren<Animator>(); } // Update is called once per frame void Update() { hAxis = Input.GetAxisRaw("Horizontal"); vAxis = Input.GetAxisRaw("Vertical"); wDown = Input.GetButton("Walk"); moveVec = new Vector3(hAxis, 0, vAxis).normalized; transform.position += moveVec*speed*Time.deltaTime; transform.position += anim.SetBool("isRun", moveVec != Vector3.zero); anim.SetBool("isWalk", wDown); } }
371
2
0
데브게므
데브게므·2023-06-20
유니티에서는 충돌 감지와 처리를 위해 물리 엔진을 사용합니다. transform.position을 직접 수정하면 물리 엔진을 우회해서 움직이게 됩니다. 이 경우, 충돌이 제대로 처리되지 않을 수 있습니다. 게임 오브젝트를 물리 엔진을 통해 움직이려면 Rigidbody 컴포넌트의 메서드를 사용해야 합니다. Rigidbody의 velocity 속성을 수정하...

질문유니티 콜라이더 터널링 해결방법없나요

플레이어 RigidBody에 설정에 collision detaction도 continuous 로 바꿔보고 해도 speed값 15만 넣어도 박스콜라이더 비집고 들어가네요
555
1
0
데브게므
데브게므·2023-06-20
아래와 같은 방법들로 콜라이더 터널링 현상을 최소화하는 방법들이 있습니다. Collision Detection 모드 변경: Rigidbody의 Collision Detection 모드를 Continuous Dynamic으로 설정해보세요. 이 모드는 연속 충돌 감지를 활성화하여 터널링을 감소시킬 수 있습니다. 그러나 이 모드는 연산 비용이 높아질 수 있으므로...

질문유니티 화살에 맞았을 시 적의 색을 바꾸려고 하는데요

화살의 태그를 Arrow로 하고 private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Arrow") { //데미지 hp--; speed /= 2; Invoke("RemindSpeed", 2.5f); isheat = true; if (hp <= 0) { //사망! //===================== //사망 연출 //===================== //출돌 판정 비활성 GetComponent<CircleCollider2D>().enabled = false; //이동 정지 rbody.velocity = new Vector2(0, 0); // 애나메이션 변경 Animator animator = GetComponent<Animator>(); animator.Play(deadAnime); //0.5초 후에 제거 Destroy(gameObject, 0.5f); } } } } 이렇게 충돌함수 정의하고 SpriteRenderer Esprite; 선언하고 start함수에 Esprite = GetComponent();해준뒤 void Update() { if(isheat) //문제발생 { Debug.Log("isheat"); Esprite.color = new Color(1f, 0f, 0f, 1f); } 요렇게 추가했는데 isheat 로그도 뜨는데 색이 안바뀌네요 왜그럴까요 ㅠ
236
1
0
데브게므
데브게므·2023-06-13
Esprite.color = new Color(1f, 0f, 0f, 1f); 코드는 캐릭터의 스프라이트 색상을 빨강으로 바꾸는 코드입니다.  그러나 만약 스프라이트에 적용된 텍스처가 색상 변경을 지원하지 않는다면 코드가 작동하지 않을 수 있습니다. 예를 들어, 스프라이트의 텍스처가 흑백 또는 알파 채널만 가진 텍스처인 경우 색상 변경이 제대로 적...