유니티 2D 총알 발사 | [유니티2D] 총알을 쏴보자! 뿌슝! 상위 132개 답변

당신은 주제를 찾고 있습니까 “유니티 2d 총알 발사 – [유니티2D] 총알을 쏴보자! 뿌슝!“? 다음 카테고리의 웹사이트 you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 Dev GomDol 이(가) 작성한 기사에는 조회수 14,135회 및 좋아요 179개 개의 좋아요가 있습니다.

유니티 2d 총알 발사 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [유니티2D] 총알을 쏴보자! 뿌슝! – 유니티 2d 총알 발사 주제에 대한 세부정보를 참조하세요

#유니티 2D에서 raycast를 사용한 원거리 공격 방법을 알려드립니다.
스크립트 언어는 C# 입니다.
기초적인 부분으로 참고하시길 바랍니다.
잘못된 점이나 조언, 충고는 언제나 환영입니다.
이미지 : https://www.kenney.nl/assets

유니티 2d 총알 발사 주제에 대한 자세한 내용은 여기를 참조하세요.

2D 총알구현,발사 – 붉은범의개발일기

주로 백준문제풀이와 유니티개발일기 작성하고있습니다~! … 나는 이번 프로젝트에서 총알 발사 버튼을 A로 해줄꺼여서 아래처럼 설정했으므로 자기 …

+ 여기에 자세히 보기

Source: red-tiger.tistory.com

Date Published: 1/15/2022

View: 2962

2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 …

게임 만들기 강좌/유니티2D액션게임만들기. 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 …

+ 자세한 내용은 여기를 클릭하십시오

Source: magatron.tistory.com

Date Published: 3/30/2022

View: 4310

2D 종스크롤 슈팅 – 총알발사 구현하기 [유니티 기초 강좌 B28]

https://blog.naver.com/gold_metal/221709884923 유니티개발 유니티2D 유니티기초 슈팅게임. 2D 종스크롤 슈팅 – 총알발사 구현하기 [유니티 기초 …

+ 더 읽기

Source: thejazzking.com

Date Published: 2/30/2022

View: 8592

Unity – 플레이어 총알 발사 구현하기! – YunDev

Unity – 플레이어 총알 발사 구현하기! S준 2020. 4. 1. 08:30. 안녕하세요!! 오늘은 슈팅게임에서 플레이어가 총알을 발사하는 코드에 대해서 알아보려고 합니다.

+ 여기에 표시

Source: sj0716.tistory.com

Date Published: 12/15/2021

View: 6005

Top 32 유니티 2D 총알 발사 Trust The Answer – Chewathai27

Summary of article content: Articles about 2D 총알구현,발사 주로 백준문제풀이와 유니티개발일기 작성하고있습니다~! … 나는 이번 프로젝트에서 총알 …

+ 여기에 표시

Source: chewathai27.com

Date Published: 3/7/2022

View: 8893

Unity – 총알 구현하기(Bullet) – 말봉코드

구현방법 생각하기. 1) 총알 만들기(Bullet). 이동, 충돌 처리, 이펙트 재생. 2) 총알 나오는 곳(Bullet Shooter). 회전, 총알생성 …

+ 여기에 더 보기

Source: malbongcode.tistory.com

Date Published: 7/18/2021

View: 5493

7일차 – 레이저 발사하기 · 유니티로 2D 슈팅게임 만들기

우선 아까 만든 레이저 프리펩을 이용하여 레이저가 발사 되도록 구현할건데요, Player.cs 안에 다음과 같은 멤버 변수를 추가해 줍시다. public GameObject laserPrefab; …

+ 여기에 보기

Source: astoration.gitbooks.io

Date Published: 12/18/2022

View: 6870

주제와 관련된 이미지 유니티 2d 총알 발사

주제와 관련된 더 많은 사진을 참조하십시오 [유니티2D] 총알을 쏴보자! 뿌슝!. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[유니티2D] 총알을 쏴보자! 뿌슝!
[유니티2D] 총알을 쏴보자! 뿌슝!

주제에 대한 기사 평가 유니티 2d 총알 발사

  • Author: Dev GomDol
  • Views: 조회수 14,135회
  • Likes: 좋아요 179개
  • Date Published: 2019. 4. 14.
  • Video Url link: https://www.youtube.com/watch?v=ggr_kKwr1OY

2D 총알구현,발사

반응형

반응형

이번 포스팅에서는 총알을 구현하고 발사하는거 까지 해보겠다.

일단 본격적으로 스크립트를 수정하기에 앞서서 Edit->ProjectSettings->Input Manager에 들어가서 아래사진과 같이 Fire1버튼을 A로 설정해주자. 나는 이번 프로젝트에서 총알 발사 버튼을 A로 해줄꺼여서 아래처럼 설정했으므로 자기가 편한대로 해도 무방하다.

이제 스크립트를 설명하겠다 스크립트를 설명하기에 앞서서, 이전 포스팅과 스크립타가 많이 달라졌다.

위에 사진을 보면 알겠지만 부모오브젝트를 Helmet으로 두고 자식오브젝트에 weapons를 넣었다.

그래서 Player.cs 에서 Weapone.cs 스크립트를 불러서 왼쪽방향키를 누를땐 캐릭터를 기준으로 왼쪽에 위치하고 왼쪽으로 총구를향하게 했다. 바뀐 코드는 아래와 같다. 자세한 설명은 아래를 보며 이해하도록 하자.

Player.cs

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private Weapon w;//스크립트 public GameObject Weapons_0;//무기 오브젝트 SpriteRenderer rend; Rigidbody2D rigid; public float maxShotDelay;//최대속도 public float curShotDelay;//발사간 속도 public GameObject bulletObj; // Start is called before the first frame update void Start() { w = Weapons_0.GetComponent();//스크립트 불러옴 rigid = gameObject.GetComponent(); rend = GetComponent(); } // Update is called once per fdbslxl rame , 1분에 약60번 업데이트 void Update() { Move();//이동하는 함수 Fire();//총알을 쏘는 함수 Reload();//장전한하는 함수 } void Move() { rigid.velocity = new Vector2(0, 0); if (Input.GetKey(KeyCode.LeftArrow))//왼쪽 방향키 누르면 { w.yFlip(); rend.flipX = true; Weapons_0.transform.localPosition = new Vector3(-0.66f, 0.38f, 0); rigid.velocity = new Vector2(-10f, 0); } if (Input.GetKey(KeyCode.RightArrow))//오른쪽 방향키 누르면 { w.nFlip(); Weapons_0.transform.localPosition = new Vector3(0.66f, 0.38f, 0); rend.flipX = false; rigid.velocity = new Vector2(10f, 0); } if (Input.GetKey(KeyCode.UpArrow)) { rigid.AddForce(new Vector2(0, 50f)); } } void Reload() { curShotDelay += Time.deltaTime; } void Fire()//발사하는 함수 { if(!Input.GetButton(“Fire1”))//Fire버튼을 안누르면 종료 { return; } if(curShotDelay(); rigid.AddForce(Vector2.right*10,ForceMode2D.Impulse); curShotDelay = 0;//꼭 초기화해줘야된다. } }

Weapon.cs

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Weapon : MonoBehaviour { SpriteRenderer rend; private void Start() { rend = GetComponent(); } public void yFlip() { rend.flipX = true; } public void nFlip() { rend.flipX = false; } }

이번 포스팅에서 제일 중요하게 여길 개념은 바로 프리펩이다.

프리펩이란? 재활용을 위해 에셋으로 저장된 게임 오브젝트

즉 총알은 프리펩으로 구현을 해줘야 한다. 아래 사진과 같이 프리펩폴더에 총알을 넣어준다.

만약 Player.cs를 위와 같이 구현했다면 아래 사진에 동그라미 친 곳과 같이 BulletObj를 선택할 수 있는데 거기에 만들어논 Bullet프리펩을 넣어준다.

아래는 시현 영상이다.

의도한대로 총알이 제한속도에 맞춰서 나가기는 한다. 그런데 아래에서 생성이된다….. 그리고 또한 총알을 계속 쓰다보면 무한히 생성되서 과부하가 걸리는데 일정영역을 벗어나면 파괴데게 bullet.cs 스크립트를 새로 작성해줘야 할 필요성이 느껴진다.

다음 포스팅에서는

총알 발사 똑바로 되게 수정

일정영역을 벗어나면 총알이 없어지게(파괴되게) 수정

위 2가지를 포스팅해 볼까 한다.

댓글과 지적은 언제든지 환영입니다~!

글이 마음에 들었다면 왼쪽이미지를 눌러서 후원 부탁드립니다>< 반응형

2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting)

728×90

반응형

Gun 오브젝트를 선택하고 총알이 나올 수 있는 포인트를 만들어 주어야 합니다

그래서 새로운 오브젝트를 Create Empty 를 생성하고 자식으로 이름을 sPoint라고 합니다

GunCtrl 스크립트 수정

아래와 같이 GunCtrl 스크립트를 수정합니다

using System.Collections; using System.Collections.Generic; using UnityEngine; public class GunCtrl : MonoBehaviour { public GameObject bullet; public Transform sPoint; public float timeBetweenShots; private float shotTime; void Update() { //카메라 스크린의 마우스 거리와 총과의 방향 Vector2 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition) – transform.position; //마우스 거리로 부터 각도 계산 float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; //축으로부터 방향과 각도의 회전값 Quaternion rotation = Quaternion.AngleAxis(angle , Vector3.forward); transform.rotation = rotation; //마우스 왼쪽버튼을 눌렀을때 if (Input.GetMouseButton(0)) { if (Time.time >= shotTime) { //총알을 생성한다 Instantiate(bullet, sPoint.position, Quaternion.AngleAxis(angle – 90,Vector3.forward)); //재장전 총알 딜레이 shotTime = Time.time + timeBetweenShots; } } } }

수정된 GunCtrl 스크립트에 프리팹으로 만들었던 bullet과 Gun 오브젝트의 자식으로 있는 sPoint를 GunCtrl스크립트에 연결합니다

아래 동영상과 같이 총알이 나오는 것을 볼 수 있습니다

bullet 프리팹을 선택하여 BulletCtrl 스크립트를 생성하고 작성합니다

BulletCtrl 스크립트를 작성합니다

using System.Collections; using System.Collections.Generic; using UnityEngine; public class BulletCtrl : MonoBehaviour { public float speed; public float lifeTime; // Start is called before the first frame update void Start() { // 총알을 시간에 맞게 지운다 Destroy(gameObject, lifeTime); } // Update is called once per frame void Update() { // 시간프레임과 speed에 따라 y축방향으로 움직인다 transform.Translate(Vector2.up * speed * Time.deltaTime); } }

아래 동영상과 같이 마우스에 따라 총이 움직이고 총알이 마우스에 따라 방향대로 발사되는 것을 확인합니다

728×90

반응형

플레이어 총알 발사 구현하기!

안녕하세요!! 오늘은 슈팅게임에서 플레이어가 총알을 발사하는 코드에 대해서 알아보려고 합니다.

그 전에 스프라이트가 있어야합니다.

스프라이트 출처 : https://blog.naver.com/gold_metal/221709884923

1. 총알 발사 조건 정하기

public ObjectManager objectManager; public bool isButtonA; public float maxShotDelay; public float curShotDelay; void Update() { Fire(); Reload(); } public void ButtonADown() { isButtonA = true; } public void ButtonAUp() { isButtonA = false; } void Fire() { if (!isButtonA) return; if (curShotDelay < maxShotDelay) return; void Reload() { curShotDelay += Time.deltaTime; } 모든 버튼들은 Down, Up 함수가 있는데 Down은 버튼이 눌렸을 때, Up은 버튼을 누르다 뗏을 때입니다. 조건문 !isButtonA는 isButtonA가 false(! = 기준의 반대)라면 총알 발사 함수를 실행하지 않습니다. Up 함수는 안누르는 것을 의미하기 때문이죠. maxShotDelay는 총알 연사 속도를 제한합니다. Reload함수에서 curShotDelay를 현재 지나가고 있는 시간을 계속 더합니다. 제가 만약 maxShotDelay를 0.15로 설정해두면 0 ~ 0.14초 까지는 총알을 발사할 수 없는 것이죠. 2.총알 만들기 GameObject[] bulletPlayerA = new GameObject[100]; GameObject[] bulletPlayerB = new GameObject[100]; public GameObject MakeObj(string type) { switch (type) { case "BulletPlayerA": targetPool = bulletPlayerA; break; case "BulletPlayerB": targetPool = bulletPlayerB; break; } for (int index = 0; index < targetPool.Length; index++) { if (!targetPool[index].activeSelf) { targetPool[index].SetActive(true); return targetPool[index]; } } return null; } 이건 플레이어 파일 코드가 아닌 ObjectManager 스크립트의 함수입니다. 플레이어에서 총알을 생성하면 매개변수 type을 받아서 type의 값에 따라 targetPool의 값이 넣어집니다. for문에서는 타겟풀의 값, 즉 생성만 한 타겟풀의 개수만큼을 돌면서 비활성화된 index번째를 활성화 시키는 것이죠. 정리 : 타겟풀의 생성된 오브젝트 개수만큼 for문을 돌면서 비활성화가 되있는 index번째를 활성화시킨다. 3.총알 발사 로직 public int power; switch (power) { case 1: GameObject bullet = objectManager.MakeObj("BulletPlayerA"); bullet.transform.position = transform.position; Rigidbody2D rigid = bullet.GetComponent(); rigid.AddForce(Vector2.up * 10, ForceMode2D.Impulse); break; case 2: GameObject bulletR = objectManager.MakeObj(“BulletPlayerA”); bulletR.transform.position = transform.position + Vector3.right * 0.1f; GameObject bulletL = objectManager.MakeObj(“BulletPlayerA”); bulletL.transform.position = transform.position + Vector3.left * 0.1f; Rigidbody2D rigidR = bulletR.GetComponent(); Rigidbody2D rigidL = bulletL.GetComponent(); rigidR.AddForce(Vector2.up * 10, ForceMode2D.Impulse); rigidL.AddForce(Vector2.up * 10, ForceMode2D.Impulse); break; default: GameObject bulletRR = objectManager.MakeObj(“BulletPlayerA”); bulletRR.transform.position = transform.position + Vector3.right * 0.35f; GameObject bulletCC = objectManager.MakeObj(“BulletPlayerB”); bulletCC.transform.position = transform.position; GameObject bulletLL = objectManager.MakeObj(“BulletPlayerA”); bulletLL.transform.position = transform.position + Vector3.left * 0.35f; Rigidbody2D rigidRR = bulletRR.GetComponent(); Rigidbody2D rigidCC = bulletCC.GetComponent(); Rigidbody2D rigidLL = bulletLL.GetComponent(); rigidRR.AddForce(Vector2.up * 10, ForceMode2D.Impulse); rigidCC.AddForce(Vector2.up * 10, ForceMode2D.Impulse); rigidLL.AddForce(Vector2.up * 10, ForceMode2D.Impulse); break; } curShotDelay = 0; }

power의 값을 1 ~ 3까지 넣는다고 가정하면 switch문을 통해 power 값이 1이면 작은 총알, 2이면 양옆의 작은 총알, 값이 3이상이라면 기본으로 좌,우,중간(큰 총알)으로 발사하는 것이죠.

일단 이 코드는 슈팅게임 초반부분이라면 이해도 잘안가실 수 있습니다.

유니티 창에서 해야하는 것들을 제가 다 넣기도 애매해서 코드만 넣었습니다…

구체적인 정보는 영상을 보시는게 좋으실 것 같네요!!

다음편은 오브젝트 풀링을 사용 해야하는 이유로 올리도록 하겠습니다~~!

Top 32 유니티 2D 총알 발사 Trust The Answer

[유니티2D] 총알을 쏴보자! 뿌슝!

[유니티2D] 총알을 쏴보자! 뿌슝!

2D 총알구현,발사

Article author: red-tiger.tistory.com

Reviews from users: 30420 Ratings

Ratings Top rated: 4.9

Lowest rated: 1

Summary of article content: Articles about 2D 총알구현,발사 주로 백준문제풀이와 유니티개발일기 작성하고있습니다~! … 나는 이번 프로젝트에서 총알 발사 버튼을 A로 해줄꺼여서 아래처럼 설정했으므로 자기 … …

Most searched keywords: Whether you are looking for 2D 총알구현,발사 주로 백준문제풀이와 유니티개발일기 작성하고있습니다~! … 나는 이번 프로젝트에서 총알 발사 버튼을 A로 해줄꺼여서 아래처럼 설정했으므로 자기 … 이번 포스팅에서는 총알을 구현하고 발사하는거 까지 해보겠다. 일단 본격적으로 스크립트를 수정하기에 앞서서 Edit->ProjectSettings->Input Manager에 들어가서 아래사진과 같이 Fire1버튼을 A로 설정해주자…

Table of Contents:

태그

‘유니티’ Related Articles

티스토리툴바

2D 총알구현,발사

Read More

2D 슈팅 게임 만들기 (5) 총알 발사하기 및 폭발 : 네이버 블로그

Article author: m.blog.naver.com

Reviews from users: 28824 Ratings

Ratings Top rated: 4.0

Lowest rated: 1

Summary of article content: Articles about 2D 슈팅 게임 만들기 (5) 총알 발사하기 및 폭발 : 네이버 블로그 이제 발사를 해볼 것이다. 스크립트 하나를 추가하여 작성해보도록 하자. moveSpeed는 총알이 날아가는 속도이다. X축으로 날아가냐 Y축으로 날아가 … …

Most searched keywords: Whether you are looking for 2D 슈팅 게임 만들기 (5) 총알 발사하기 및 폭발 : 네이버 블로그 이제 발사를 해볼 것이다. 스크립트 하나를 추가하여 작성해보도록 하자. moveSpeed는 총알이 날아가는 속도이다. X축으로 날아가냐 Y축으로 날아가 …

Table of Contents:

카테고리 이동

소소한 취미

이 블로그

C-Shap 2DShoot

카테고리 글

카테고리

이 블로그

C-Shap 2DShoot

카테고리 글

2D 슈팅 게임 만들기 (5) 총알 발사하기 및 폭발 : 네이버 블로그

Read More

2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) :: SuperGame

Article author: magatron.tistory.com

Reviews from users: 28645 Ratings

Ratings Top rated: 3.7

Lowest rated: 1

Summary of article content: Articles about 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) :: SuperGame 게임 만들기 강좌/유니티2D액션게임만들기. 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 … …

Most searched keywords: Whether you are looking for 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) :: SuperGame 게임 만들기 강좌/유니티2D액션게임만들기. 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 … Gun 오브젝트를 선택하고 총알이 나올 수 있는 포인트를 만들어 주어야 합니다 그래서 새로운 오브젝트를 Create Empty 를 생성하고 자식으로 이름을 sPoint라고 합니다 GunCtrl 스크립트 수정 아래와 같이 GunCt..핵꿀잼 !!!

Table of Contents:

2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting)

티스토리툴바

2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) :: SuperGame

Read More

Unity – 총알 구현하기(Bullet) :: 말봉코드_heryu

Article author: malbongcode.tistory.com

Reviews from users: 31747 Ratings

Ratings Top rated: 4.6

Lowest rated: 1

Summary of article content: Articles about Unity – 총알 구현하기(Bullet) :: 말봉코드_heryu 구현방법 생각하기. 1) 총알 만들기(Bullet). 이동, 충돌 처리, 이펙트 재생. 2) 총알 나오는 곳(Bullet Shooter). 회전, 총알생성 … …

Most searched keywords: Whether you are looking for Unity – 총알 구현하기(Bullet) :: 말봉코드_heryu 구현방법 생각하기. 1) 총알 만들기(Bullet). 이동, 충돌 처리, 이펙트 재생. 2) 총알 나오는 곳(Bullet Shooter). 회전, 총알생성 … 1. 구현방법 생각하기 1) 총알 만들기(Bullet) 이동, 충돌 처리, 이펙트 재생 2) 총알 나오는 곳(Bullet Shooter) 회전, 총알생성 2. 구현 1) 총알 만들기(Bullet) 마음에 드는 Sprite를 가져다가 만듬 (나는 y축+..말봉코드, malbongcode

Table of Contents:

Unity – 총알 구현하기(Bullet)

1 구현방법 생각하기

2 구현

3 결과

4 전체코드

티스토리툴바

Unity – 총알 구현하기(Bullet) :: 말봉코드_heryu

Read More

Unity – 플레이어 총알 발사 구현하기!

Article author: sj0716.tistory.com

Reviews from users: 3364 Ratings

Ratings Top rated: 4.7

Lowest rated: 1

Summary of article content: Articles about Unity – 플레이어 총알 발사 구현하기! Unity – 플레이어 총알 발사 구현하기! S준 2020. 4. 1. 08:30. 안녕하세요!! 오늘은 슈팅게임에서 플레이어가 총알을 발사하는 코드에 대해서 알아보려고 합니다. …

Most searched keywords: Whether you are looking for Unity – 플레이어 총알 발사 구현하기! Unity – 플레이어 총알 발사 구현하기! S준 2020. 4. 1. 08:30. 안녕하세요!! 오늘은 슈팅게임에서 플레이어가 총알을 발사하는 코드에 대해서 알아보려고 합니다. 안녕하세요!! 오늘은 슈팅게임에서 플레이어가 총알을 발사하는 코드에 대해서 알아보려고 합니다. 그 전에 스프라이트가 있어야합니다. 스프라이트 출처 : https://blog.naver.com/gold_metal/221709884923 [유..

Table of Contents:

YunDev

Unity – 플레이어 총알 발사 구현하기! 본문

티스토리툴바

Unity – 플레이어 총알 발사 구현하기!

Read More

유니티-8방향으로 총알을 발사하다.

Article author: soo0100.tistory.com

Reviews from users: 15572 Ratings

Ratings Top rated: 3.2

Lowest rated: 1

Summary of article content: Articles about 유니티-8방향으로 총알을 발사하다. 위 코드에서 중요한점은 바로. rbody.AddForce 함수이다. 하기 라인을 해석하자면, X축으로 10의 힘을, Y축으로 10의 힘을 주어서 발사하라는 의미로 … …

Most searched keywords: Whether you are looking for 유니티-8방향으로 총알을 발사하다. 위 코드에서 중요한점은 바로. rbody.AddForce 함수이다. 하기 라인을 해석하자면, X축으로 10의 힘을, Y축으로 10의 힘을 주어서 발사하라는 의미로 … 타임 파이럿 처럼 8방향으로 움직이면서 사방으로 총알을 쏘기위해서는 https://www.youtube.com/watch?v=AgNTahUrJCI https://soo0100.tistory.com/1553 유니티 – 전투기 8방향으로 이동 하기. 타임 파일럿 이라..

Table of Contents:

태그

관련글

댓글1

공지사항

최근글

인기글

최근댓글

태그

티스토리툴바

유니티-8방향으로 총알을 발사하다.

Read More

7일차 – 레이저 발사하기 · 유니티로 2D 슈팅게임 만들기

Article author: astoration.gitbooks.io

Reviews from users: 26016 Ratings

Ratings Top rated: 4.1

Lowest rated: 1

Summary of article content: Articles about 7일차 – 레이저 발사하기 · 유니티로 2D 슈팅게임 만들기 우선 아까 만든 레이저 프리펩을 이용하여 레이저가 발사 되도록 구현할건데요, Player.cs 안에 다음과 같은 멤버 변수를 추가해 줍시다. public GameObject laserPrefab; … …

Most searched keywords: Whether you are looking for 7일차 – 레이저 발사하기 · 유니티로 2D 슈팅게임 만들기 우선 아까 만든 레이저 프리펩을 이용하여 레이저가 발사 되도록 구현할건데요, Player.cs 안에 다음과 같은 멤버 변수를 추가해 줍시다. public GameObject laserPrefab; …

Table of Contents:

7일차 – 레이저 발사하기 · 유니티로 2D 슈팅게임 만들기

Read More

See more articles in the same category here: Top 455 tips update new.

2D 총알구현,발사

반응형 반응형 이번 포스팅에서는 총알을 구현하고 발사하는거 까지 해보겠다. 일단 본격적으로 스크립트를 수정하기에 앞서서 Edit->ProjectSettings->Input Manager에 들어가서 아래사진과 같이 Fire1버튼을 A로 설정해주자. 나는 이번 프로젝트에서 총알 발사 버튼을 A로 해줄꺼여서 아래처럼 설정했으므로 자기가 편한대로 해도 무방하다. 이제 스크립트를 설명하겠다 스크립트를 설명하기에 앞서서, 이전 포스팅과 스크립타가 많이 달라졌다. 위에 사진을 보면 알겠지만 부모오브젝트를 Helmet으로 두고 자식오브젝트에 weapons를 넣었다. 그래서 Player.cs 에서 Weapone.cs 스크립트를 불러서 왼쪽방향키를 누를땐 캐릭터를 기준으로 왼쪽에 위치하고 왼쪽으로 총구를향하게 했다. 바뀐 코드는 아래와 같다. 자세한 설명은 아래를 보며 이해하도록 하자. Player.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private Weapon w;//스크립트 public GameObject Weapons_0;//무기 오브젝트 SpriteRenderer rend; Rigidbody2D rigid; public float maxShotDelay;//최대속도 public float curShotDelay;//발사간 속도 public GameObject bulletObj; // Start is called before the first frame update void Start() { w = Weapons_0.GetComponent ();//스크립트 불러옴 rigid = gameObject.GetComponent (); rend = GetComponent (); } // Update is called once per fdbslxl rame , 1분에 약60번 업데이트 void Update() { Move();//이동하는 함수 Fire();//총알을 쏘는 함수 Reload();//장전한하는 함수 } void Move() { rigid.velocity = new Vector2(0, 0); if (Input.GetKey(KeyCode.LeftArrow))//왼쪽 방향키 누르면 { w.yFlip(); rend.flipX = true; Weapons_0.transform.localPosition = new Vector3(-0.66f, 0.38f, 0); rigid.velocity = new Vector2(-10f, 0); } if (Input.GetKey(KeyCode.RightArrow))//오른쪽 방향키 누르면 { w.nFlip(); Weapons_0.transform.localPosition = new Vector3(0.66f, 0.38f, 0); rend.flipX = false; rigid.velocity = new Vector2(10f, 0); } if (Input.GetKey(KeyCode.UpArrow)) { rigid.AddForce(new Vector2(0, 50f)); } } void Reload() { curShotDelay += Time.deltaTime; } void Fire()//발사하는 함수 { if(!Input.GetButton(“Fire1”))//Fire버튼을 안누르면 종료 { return; } if(curShotDelay (); rigid.AddForce(Vector2.right*10,ForceMode2D.Impulse); curShotDelay = 0;//꼭 초기화해줘야된다. } } Weapon.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Weapon : MonoBehaviour { SpriteRenderer rend; private void Start() { rend = GetComponent (); } public void yFlip() { rend.flipX = true; } public void nFlip() { rend.flipX = false; } } 이번 포스팅에서 제일 중요하게 여길 개념은 바로 프리펩이다. 프리펩이란? 재활용을 위해 에셋으로 저장된 게임 오브젝트 즉 총알은 프리펩으로 구현을 해줘야 한다. 아래 사진과 같이 프리펩폴더에 총알을 넣어준다. 만약 Player.cs를 위와 같이 구현했다면 아래 사진에 동그라미 친 곳과 같이 BulletObj를 선택할 수 있는데 거기에 만들어논 Bullet프리펩을 넣어준다. 아래는 시현 영상이다. 의도한대로 총알이 제한속도에 맞춰서 나가기는 한다. 그런데 아래에서 생성이된다….. 그리고 또한 총알을 계속 쓰다보면 무한히 생성되서 과부하가 걸리는데 일정영역을 벗어나면 파괴데게 bullet.cs 스크립트를 새로 작성해줘야 할 필요성이 느껴진다. 다음 포스팅에서는 총알 발사 똑바로 되게 수정 일정영역을 벗어나면 총알이 없어지게(파괴되게) 수정 위 2가지를 포스팅해 볼까 한다. 댓글과 지적은 언제든지 환영입니다~! 글이 마음에 들었다면 왼쪽이미지를 눌러서 후원 부탁드립니다>< 반응형 2D 액션 게임 만들기 3 weapon (총) 회전시켜서 총알 발사하기 (Shooting) 728×90 반응형 Gun 오브젝트를 선택하고 총알이 나올 수 있는 포인트를 만들어 주어야 합니다 그래서 새로운 오브젝트를 Create Empty 를 생성하고 자식으로 이름을 sPoint라고 합니다 GunCtrl 스크립트 수정 아래와 같이 GunCtrl 스크립트를 수정합니다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class GunCtrl : MonoBehaviour { public GameObject bullet; public Transform sPoint; public float timeBetweenShots; private float shotTime; void Update() { //카메라 스크린의 마우스 거리와 총과의 방향 Vector2 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition) – transform.position; //마우스 거리로 부터 각도 계산 float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; //축으로부터 방향과 각도의 회전값 Quaternion rotation = Quaternion.AngleAxis(angle , Vector3.forward); transform.rotation = rotation; //마우스 왼쪽버튼을 눌렀을때 if (Input.GetMouseButton(0)) { if (Time.time >= shotTime) { //총알을 생성한다 Instantiate(bullet, sPoint.position, Quaternion.AngleAxis(angle – 90,Vector3.forward)); //재장전 총알 딜레이 shotTime = Time.time + timeBetweenShots; } } } } 수정된 GunCtrl 스크립트에 프리팹으로 만들었던 bullet과 Gun 오브젝트의 자식으로 있는 sPoint를 GunCtrl스크립트에 연결합니다 아래 동영상과 같이 총알이 나오는 것을 볼 수 있습니다 bullet 프리팹을 선택하여 BulletCtrl 스크립트를 생성하고 작성합니다 BulletCtrl 스크립트를 작성합니다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BulletCtrl : MonoBehaviour { public float speed; public float lifeTime; // Start is called before the first frame update void Start() { // 총알을 시간에 맞게 지운다 Destroy(gameObject, lifeTime); } // Update is called once per frame void Update() { // 시간프레임과 speed에 따라 y축방향으로 움직인다 transform.Translate(Vector2.up * speed * Time.deltaTime); } } 아래 동영상과 같이 마우스에 따라 총이 움직이고 총알이 마우스에 따라 방향대로 발사되는 것을 확인합니다 728×90 반응형

Unity – 총알 구현하기(Bullet)

1. 구현방법 생각하기 1) 총알 만들기(Bullet) 이동, 충돌 처리, 이펙트 재생 2) 총알 나오는 곳(Bullet Shooter) 회전, 총알생성 2. 구현 1) 총알 만들기(Bullet) 마음에 드는 Sprite를 가져다가 만듬 (나는 y축+ 쪽이 머리인 스프라이트를 선택함) 총알은 앞으로 나가야 하기 때문에 rigidbody2D 설정 + Kinematic 설정 -> Script에서 velocity 설정할 것 총알은 Collider를 만나면 처리해야 함으로 Collider 추가 + Trigger 설정 -> OnTriggerEnter2D 사용 할 것 Bullet Component 우선 앞으로 이동하기만 하면됨, 코드는 아래와 같음 -> 앞으로만 이동해야 하는데 자기 회전값에 대한 앞임, transform.up 신경써야 함 1 2 3 4 5 6 7 8 9 10 private Rigidbody2D rigid; private void Start() { rigid = GetComponent < Rigidbody2D > (); Destroy(gameObject, lifeTime); } private void Update() { rigid.velocity = transform.up * speed; } Colored by Color Scripter cs 또한 충돌처리 해줘야 함 파티클(or음악) 재생 + 데미지관련함수 + 총알꺼주기 코드는 아래와 같음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public ParticleSystem explosionParticle; private void OnTriggerEnter2D(Collider2D other) { if (other.tag = = “Enemy” ) { //Play Particle ParticleSystem instance = Instantiate(explosionParticle, transform.position, Quaternion.identity); instance.Play(); Destroy(instance.gameObject, instance.main.duration); //Take Damage //따로 구현필요 //Set Active off Destroy(gameObject); } } Colored by Color Scripter cs particle은 직접 만들거나 asset store에서 무료받아 사용하면 됨, 여기서는 Bullet의 Audio는 구현하지 않음 particle직접 만들어보는 것도 나쁘지 않음, 추후에 업로드 하겠음 위의 코드에서 Destory는 좋은 코드가 되지 못함 -> 생성 후 파괴를 계속하여 오버헤드 생김 -> 원래는 Objectpool에서 가져오는 것이 맞음 (여기서는 살펴보지 않음) 이러한 Bullet을 Prefab으로 만들어 둠 앞으로 가는 총알 cf) Enemy도 Rigidbody + Collider Trigger 2) 총알 나오는 곳(Bullet Shooter) 플레이어가 회전 중인 상태에 적절한 타이밍을 맞춰 상대를 맞추는 것을 구현하려 함 -> 마우스를 클릭하면 총알이 Bullet Shooter에서 나옴 플레이어가 회전 중일 때 Shooter도 회전해야 하므로 자식으로 설정 player에 스크립트 추가하여 초당 z축 회전을 시켜줌 -> 그럼 Bullet Shooter도 회전할 것 1 2 3 4 void Update()//script in player { transform.Rotate( 0 , 0 , 360 * Time.deltaTime); } Colored by Color Scripter cs Bullet Shooter에서는 위에서 만든 Bullet을 public으로 가져와 사용 마우스를 누르면 총알을 생성함 -> 원래 Objectpool을 이용해서 가져오는게 효율적임, 여기서는 편의상 코드는 아래와 같음 1 2 3 4 5 6 7 8 public GameObject bullet; void Update() //script in bulletshooter { if (Input.GetMouseButtonDown( 0 )) { Instantiate(bullet, transform.position, transform.rotation); } } Colored by Color Scripter cs 3. 결과 4. 전체코드 Bullet 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System .Collections; using System .Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { public ParticleSystem explosionParticle; public float speed = 5. 0f; public float lifeTime = 10. 0f; private Rigidbody2D rigid; private void Start() { rigid = GetComponent < Rigidbody2D > (); Destroy(gameObject, lifeTime); } private void Update() { rigid.velocity = transform.up * speed; } private void OnTriggerEnter2D(Collider2D other) { if (other.tag = = “Enemy” ) { //Play Particle ParticleSystem instance = Instantiate(explosionParticle, transform.position, Quaternion.identity); instance.Play(); Destroy(instance.gameObject, instance.main.duration); //Take Damage //Set Active off Destroy(gameObject); } } } Colored by Color Scripter cs BulletShooter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 using System .Collections; using System .Collections.Generic; using UnityEngine; public class BulletShooter : MonoBehaviour { public GameObject bullet; void Update() { if (Input.GetMouseButtonDown( 0 )) { Instantiate(bullet, transform.position, transform.rotation); } } } Colored by Color Scripter cs Player 1 2 3 4 5 6 7 8 9 10 11 12 using System .Collections; using System .Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { void Update() { transform.Rotate( 0 , 0 , 360 * Time.deltaTime); } } Colored by Color Scripter cs === 참고 === Bullet이 앞으로만 간다고 해서 Vector3.up 쓰면 안됌 자신의 회전에 따른 앞(local.up)이므로 transform.up 씀에 명심 1. Vector3.up -> global 2. transform.up -> local

So you have finished reading the 유니티 2d 총알 발사 topic article, if you find this article useful, please share it. Thank you very much. See more: 유니티 총알 발사 방향, 유니티 3D 총알 발사, 유니티 2D 마우스 총알, 유니티 총알 패턴, 유니티 총알 충돌, 유니티 총알 Destroy, 유니티 총 발사, 유니티 샷건 구현

Unity – 총알 구현하기(Bullet)

1. 구현방법 생각하기

1) 총알 만들기(Bullet)

이동, 충돌 처리, 이펙트 재생

2) 총알 나오는 곳(Bullet Shooter)

회전, 총알생성

2. 구현

1) 총알 만들기(Bullet)

마음에 드는 Sprite를 가져다가 만듬 (나는 y축+ 쪽이 머리인 스프라이트를 선택함)

총알은 앞으로 나가야 하기 때문에 rigidbody2D 설정 + Kinematic 설정

-> Script에서 velocity 설정할 것

총알은 Collider를 만나면 처리해야 함으로 Collider 추가 + Trigger 설정

-> OnTriggerEnter2D 사용 할 것

Bullet Component

우선 앞으로 이동하기만 하면됨, 코드는 아래와 같음

-> 앞으로만 이동해야 하는데 자기 회전값에 대한 앞임, transform.up 신경써야 함

1 2 3 4 5 6 7 8 9 10 private Rigidbody2D rigid; private void Start() { rigid = GetComponent < Rigidbody2D > (); Destroy(gameObject, lifeTime); } private void Update() { rigid.velocity = transform.up * speed; } Colored by Color Scripter cs

또한 충돌처리 해줘야 함

파티클(or음악) 재생 + 데미지관련함수 + 총알꺼주기

코드는 아래와 같음

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public ParticleSystem explosionParticle; private void OnTriggerEnter2D(Collider2D other) { if (other.tag = = “Enemy” ) { //Play Particle ParticleSystem instance = Instantiate(explosionParticle, transform.position, Quaternion.identity); instance.Play(); Destroy(instance.gameObject, instance.main.duration); //Take Damage //따로 구현필요 //Set Active off Destroy(gameObject); } } Colored by Color Scripter cs

particle은 직접 만들거나 asset store에서 무료받아 사용하면 됨, 여기서는 Bullet의 Audio는 구현하지 않음

particle직접 만들어보는 것도 나쁘지 않음, 추후에 업로드 하겠음

위의 코드에서 Destory는 좋은 코드가 되지 못함

-> 생성 후 파괴를 계속하여 오버헤드 생김

-> 원래는 Objectpool에서 가져오는 것이 맞음 (여기서는 살펴보지 않음)

이러한 Bullet을 Prefab으로 만들어 둠

앞으로 가는 총알

cf) Enemy도 Rigidbody + Collider Trigger

2) 총알 나오는 곳(Bullet Shooter)

플레이어가 회전 중인 상태에 적절한 타이밍을 맞춰 상대를 맞추는 것을 구현하려 함

-> 마우스를 클릭하면 총알이 Bullet Shooter에서 나옴

플레이어가 회전 중일 때 Shooter도 회전해야 하므로 자식으로 설정

player에 스크립트 추가하여 초당 z축 회전을 시켜줌

-> 그럼 Bullet Shooter도 회전할 것

1 2 3 4 void Update()//script in player { transform.Rotate( 0 , 0 , 360 * Time.deltaTime); } Colored by Color Scripter cs

Bullet Shooter에서는 위에서 만든 Bullet을 public으로 가져와 사용

마우스를 누르면 총알을 생성함

-> 원래 Objectpool을 이용해서 가져오는게 효율적임, 여기서는 편의상

코드는 아래와 같음

1 2 3 4 5 6 7 8 public GameObject bullet; void Update() //script in bulletshooter { if (Input.GetMouseButtonDown( 0 )) { Instantiate(bullet, transform.position, transform.rotation); } } Colored by Color Scripter cs

3. 결과

4. 전체코드

Bullet

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System .Collections; using System .Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { public ParticleSystem explosionParticle; public float speed = 5. 0f; public float lifeTime = 10. 0f; private Rigidbody2D rigid; private void Start() { rigid = GetComponent < Rigidbody2D > (); Destroy(gameObject, lifeTime); } private void Update() { rigid.velocity = transform.up * speed; } private void OnTriggerEnter2D(Collider2D other) { if (other.tag = = “Enemy” ) { //Play Particle ParticleSystem instance = Instantiate(explosionParticle, transform.position, Quaternion.identity); instance.Play(); Destroy(instance.gameObject, instance.main.duration); //Take Damage //Set Active off Destroy(gameObject); } } } Colored by Color Scripter cs

BulletShooter

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 using System .Collections; using System .Collections.Generic; using UnityEngine; public class BulletShooter : MonoBehaviour { public GameObject bullet; void Update() { if (Input.GetMouseButtonDown( 0 )) { Instantiate(bullet, transform.position, transform.rotation); } } } Colored by Color Scripter cs

Player

1 2 3 4 5 6 7 8 9 10 11 12 using System .Collections; using System .Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { void Update() { transform.Rotate( 0 , 0 , 360 * Time.deltaTime); } } Colored by Color Scripter cs

=== 참고 ===

Bullet이 앞으로만 간다고 해서 Vector3.up 쓰면 안됌

자신의 회전에 따른 앞(local.up)이므로 transform.up 씀에 명심

1. Vector3.up -> global

2. transform.up -> local

레이저 발사하기 · 유니티로 2D 슈팅게임 만들기

7일차 – 레이저 발사하기

우선 아까 만든 레이저 프리펩을 이용하여 레이저가 발사 되도록 구현할건데요, Player.cs 안에 다음과 같은 멤버 변수를 추가해 줍시다.

public GameObject laserPrefab; //발사할 레이저를 저장합니다. public bool canShoot = true; //레이저를 쏠 수 있는 상태인지 검사합니다. const float shootDelay = 0.5f; //레이저를 쏘는 주기를 정해줍니다. float shootTimer = 0; //시간을 잴 타이머를 만들어줍니다.

그다음엔 ShootControl 함수를 만들어서 레이저를 쏘도록 구현할건데요.

void ShootControl() // 발사를 관리하는 함수 입니다. { if (canShoot) // 쏠 수 있는 상태인지 검사합니다. { if (shootTimer > shootDelay && Input.GetKey(KeyCode.Space)) //쿨타임이 지났는지와, 공격키인 스페이스가 눌려있는지 검사합니다. { Instantiate(laserPrefab, transform.position, Quaternion.identity); //레이저를 생성해줍니다. shootTimer = 0; //쿨타임을 다시 카운트 합니다. } shootTimer += Time.deltaTime; //쿨타임을 카운트 합니다. } }

스페이스바를 누르면 레이저가 나갑니다!

키워드에 대한 정보 유니티 2d 총알 발사

다음은 Bing에서 유니티 2d 총알 발사 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [유니티2D] 총알을 쏴보자! 뿌슝!

  • 유니티
  • Unity
  • c#
  • 게임만들기
  • 총알발사
  • 유니티 원거리 공격
  • 유니티 공격
  • 유니티 Attack
  • Raycast
  • GameDev
  • 원거리공격
  • 유니티 미사일
[유니티2D] #총알을 #쏴보자! #뿌슝!


YouTube에서 유니티 2d 총알 발사 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [유니티2D] 총알을 쏴보자! 뿌슝! | 유니티 2d 총알 발사, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment