-
[Unity,C#] 2D 비행 슈팅 조작 스크립트 작성 (마우스 입력)Develop/Tips 2020. 3. 11. 10:43반응형
1. 개요
비행슈팅 조작법을 터치에서 마우스로 변경한 코드입니다.
2. 코드
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControl : MonoBehavior { public float moveSpeed = 2f; // 비행기의 이동 속도 private Rigidbody2D rigid2D; // 비행기의 강체(Rigidbody) private bool isFar = false; // 터치와 비행기의 거리 체크 private Vector3 inputPosition; // 터치의 월드 포지션 private Vector2 moveDir; // 화면 터치 시 비행기 이동 방향 void Start () { rigid2D = GetComponent<Rigidbody2D>(); } void Update () { if(rigid2D == null) // 강체가 없거나 터치가 없으면 리턴 return; moveDir = Vector2.zero; // 방향 초기화 if(Input.GetMouseButtonDown(0)) { inputPosition = GetInputPosition(Input.mousePosition); if (Vector3.Distance(transform.position, inputPosition) > .2f) { isFar = true; // 비행기와 터치 사이의 거리가 먼 상태 } } if(Input.GetMouseButtonUp(0)) { isFar = false; } if(Input.GetMouseButton(0)) { inputPosition = GetInputPosition(Input.mousePosition); if (isFar) // 거리가 먼 상태 { moveDir = GetDirection(transform.position, inputPosition); // 터치와 비행기 거리를 체크 isFar = (Vector3.Distance(transform.position, inputPosition) > .2f); } else // 터치에 가까운 상태 { transform.position = inputPosition; } } rigid2D.velocity = moveDir * moveSpeed; // 방향에 속도를 곱해서 강체에 적용 } // 터치의 스크린 포지션을 월드 포지션으로 변경 public Vector3 GetInputPosition(Vector3 position) { Vector3 screenPosition = position + (Vector3.back * Camera.main.transform.position.z); return Camera.main.ScreenToWorldPoint(screenPosition); } // 두 포지션 사이의 방향 public Vector2 GetDirection (Vector2 from, Vector2 to) { Vector2 delta = to - from; float radian = Mathf.Atan2(delta.y, delta.x); return new Vector2(Mathf.Cos(radian), Mathf.Sin(radian)); } }
[Unity/C#] 2D 비행 슈팅 조작 스크립트 작성 (터치 입력)
[Unity/C#] 2D 비행 슈팅 조작 스크립트 작성 (터치 입력)
1. 개요 모바일 비행 슈팅 게임 Sky Force 시리즈 게임에서 비행기를 조작할 때 터치한 위치로 비행기가 따라 다닙니다. 비행기에서 먼 곳을 터치하면 터치한 위치로 이동하기 위해 비행기가 움직이고, 비행기가..
www.dasony.net
반응형'Develop > Tips' 카테고리의 다른 글
[Unity,C#] 2D 비행 슈팅 조작 스크립트 작성 (터치 입력) (0) 2020.03.11 [SWIFT] let 과 var의 차이 (0) 2019.12.15 [GPGS] 구글 플레이 게임 서비스 유니티 플러그인 사용 시 실시간 갱신 문제 (1) 2019.01.06 [UNITY] Google 에서 제공하는 Admob 플러그인 사용시 Crash로 게임 실행이 안될때 (2) 2019.01.03 [C#,UI] 마우스 or 터치 입력 포지션이 UI 위에 있는지 체크하기 (0) 2018.11.20