유니티 2D게임에서 축구공을 스페이스 바 누르면 3번째 줄에 벡터 설정한대로 날아가게는 만들었는데, 저렇게 쏘는 방향을 정해놓고 쏘는 대신에
W 누르고 스페이스바 누르면 앞쪽으로 슛, W와 D를 동시에 누르고 스페이스 바 누르면 북동쪽으로 슛, 이런 식으로 설정 할 수 있을까요 ㅠ
감사합니다
유니티 2D게임에서 축구공을 스페이스 바 누르면 3번째 줄에 벡터 설정한대로 날아가게는 만들었는데, 저렇게 쏘는 방향을 정해놓고 쏘는 대신에
W 누르고 스페이스바 누르면 앞쪽으로 슛, W와 D를 동시에 누르고 스페이스 바 누르면 북동쪽으로 슛, 이런 식으로 설정 할 수 있을까요 ㅠ
감사합니다
GetAxis로 얻은 수평 수직값으로 방향알아낸다음 그방향으로 날리면됨
private void shoot(Vector3 direction) { GetComponent<Rigidbody>().AddForce(direction); }
형 진짜 미안한데 이 코드대로 해보고 고민 해봤는데 에러는 안 뜨는데 공이 안 날라가네.. 어디가 문제일까 ㅠㅠ
코드 뭐 고친거 잇음?
아니 형 위에 GetCompnent 이부분 내가 미리 define해둔 rb로 바꾼거 외엔 없는데.. 흠 serializefield는 첫 퍼블릭 클래스 안에 쓰는거 맞지? 요상하네
아 내가볼땐 getKeyDown 때문인거 같네. 첫번째 GetKeyDown만 그대로 냅두고 그 if 문 안에있는 GetKeyDown을 전부 그냥 GetKey 로 바꿔봐
밥먹으러 가기전에 그냥 간단하게 쓰고간거라 실제로 돌려보진 않아서 실수햇어
와 형 지렸다 진심으로 고마워 ㅠㅠ 혹시 이제 이게 골대로 들어가면 점수 올라가고 공을 다시 원위치 (리셋) 시켜야하는데 키워드 뭐라고 검색하면 좋을까 ㅠ
골대로 들어가는 충돌 부분이 모르겠는거면 RigidBody에 isTrigger 옵션이랑, OnTriggerEnter() 함수 찾아서 검색해 보고, 공 위치 되돌리는거는 그냥 transform.position 조작하면 되니까 간단하겟지?
감사합니다 행님 열심히 해볼게요 ㅎㅎ 혹시 (멀티플레이어라서) 한 턴 끝나고 다음 사람 차례로 넘어가는건 키워드를 뭐라고 검색해야ㅐ할지 여쩌봐도 될까요 ㅠㅠ
private void Update() { if(Input.GetKeyDown(KeyCode.Space)) { Vector3 direction = Vector3.zero; direction.y = Input.GetKeyDown(KeyCode.W) ? 1 :0; direction.x = (Input.GetKeyDown(KeyCode.D) ? directionBias : 0) - (Input.GetKeyDown(KeyCode.A) ? directionBias : 0); shoot(direction = direction.normalized * force); } }
[SerializeField] private float force = 5f; [SerializeField] private float directionBias = 1f;