수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

GetKeyState에 대해 질문이요..

가이

2023.12.12



어설픈 겜 하나를 만들고 있는데 그냥 물체가 방향키로 입력받고 스페이스로 점프를 하는 내용이에요..하다보니까 문제가 키가 동시 입력이 안 받아진다는 거에요 ㅠㅠ찾아보니까 키를 동시입력 받게 해주는 GetKeyState 혹은 AsyncKeyState 가 있더라구요..저는 현재 방향키를 누르면서 스페이스를 누르면 예를 들면 앞으로 가는 키보드 ↑를 누르면서 스페이스 누르면 점프하면서 앞으로 가도록 하고 싶은데현재 동시입력이 안 받아지니까 ↑ 누르다가 스페이스 입력하면 제자리에 딱 멈춰서 점프를 해요그리고 스페이스 한번 입력받고 나면 계속 그 자리에멈춰있고..ㅠ (방향키 다시 뗐다가 누르기 전까지 그대로)어떤 식으로 하면 해결할 수 있을까요?일단 인터넷에서 보고 흉내는 내봤는데 하나도 안되네요 아래 코드입니다;GLvoid Keyboard(unsigned char key, int x,int y)
{if(GetAsyncKeyState(VK_SPACE) & 0x8000)
{
jump_command=1; //스페이스를 눌렀을시 전역변수 jump_command=0이 1로 바뀌어서 점프를 하게 함
}
glutPostRedisplay();
}void SpecialKeyboard(int key, int x, int y)
{
if(GetAsyncKeyState(VK_UP) & 0x8000) //앞으로
{
object_move_z=object_move_z-object_move1;
printf(현재 z 좌표값 = %f \n, object_move_z);
}if(GetAsyncKeyState(VK_LEFT) & 0x8000) //왼쪽으로
{
object_move_x=object_move_x-object_move3;
printf(현재 x 좌표값 = %f \n, object_move_x);

}
if(GetAsyncKeyState(VK_RIGHT) & 0x8000) //오른쪽으로
{
object_move_x=object_move_x+object_move3;
printf(현재 x 좌표값 = %f \n, object_move_x);
}glutPostRedisplay();
}void TimerFunction (int value) //이 함수가 점프를 하게 하는 함수입니다
{
if(jump_command==1) //스페이스를 눌러스 1로 바뀌었을시
{
if(!op)
{
if(object_move_y80) //y축 높이가 80이하일시 위로점프하게 함
{
object_move2=10.0f;
}

else if(object_move_y80) //y축 높이가 80을 넘으면 다시 아래로 내려오게 함
{
op=1;
object_move2=-10.0f;

}
}object_move_y=object_move_y+object_move2; //이 식이 점프하고 내려오는 식
if(object_move_y==0)
{
op=0;
jump_command=0;
}
}
glutPostRedisplay();
glutTimerFunc(100, TimerFunction, 1);
}지금 해보니까 방향키 값(방향키 값 안에다가 식을 넣은 형태)들은 동시 입력이 되네요대각선으로 움직여집니다만점프키는 안에 식을 넣은게 아니라 단순히 if문을 바꾸는 형태라 그런지 안 먹히네요;;

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 라임나무 2023-12-12

    점프하는 부분에서... 값을 입력 받은후에 바로 검사를 해야 점프 할거같은데요..?
    jumpcommand가 1로 바뀌는 if문 다음에 바로 TimerFunction을 선언해주셔야 하고
    그리고 매개변수를 선언했는데 사용하지 않는것같은데..
    value라는 매개변수를 없애던지.. 아니면 jumpcommand를 매개변수로 받아서 value값을 사용하시는게 맞을거 같고 점프 도중이동이 필요하다면... getasynkeystate 를 점프하는곳에 선언하셔서..

  • 활력초 2023-12-12

    감사합니다! 소스 더 붙였습니다
    지금 방향키들끼리는 동시입력이 됩니다 오른쪽, 앞쪽 누르면 오른쪽 대각선으로 움직이는데..
    점프는 여전히 반응이 없네요..
    추측컨데 방향키 값들은 각 if문 안에 object_move_x=object_move_x+object_move3;
    이런 식들을 포함하고 있어서 동작하는 것 같고
    jump 키는 단순히 jump_command=1; 이거 뿐이여서 동작을 안 하는 것 같은데..

  • 어둠 2023-12-12

    점프하는 소스를 보여주세요 뭔가 for문으로이루어 져있는건지... 아니면 저 점프 커멘드라는 변수 하나만으로 점프를 하는건지.. 함수가 또 있는건지... 단지 위에있는 소스만으로는 대답해드릴수있는게 한정되어있기때문에 소스를 더 공개해주셔야할거같네요..

  • 똘끼 2023-12-12

    다중 if문을 이용하면 스페이스바 클릭이 동작할때 다시 getAsyncKeyState를 써서 앞으로누르면 앞으로 가고 뒤로 누르면 뒤로 가는 방식으로 하면되지않을까요??

번호 제 목 글쓴이 날짜
2700422 버전에 관해 질문 라온제나 2025-07-04
2700393 mysql이 갑자기!!!!!!!!!!!!!!!에러가;; (2) 소미 2025-07-04
2700359 3.0 ) SimpleButton 상태 강제 변경 (3) 희선 2025-07-04
2700304 ie8 전용핵 문의 (3) 여자 2025-07-03
2700281 이런경우 어떻게 코딩해야 표준에 따르는건가요? (6) 늘솜 2025-07-03
2700230 질문이여 ! 뿡뿡몬 2025-07-03
2700205 액션스크립트책 좀 추천해주세요. (10) 화이트캣 2025-07-02
2700173 자바 소스인데 어떤게 에러인지..? (1) 호빵녀 2025-07-02
2700142 하단이 붙어있는 가변 레이아웃구조 질문드립니다. 이플 2025-07-02
2700089 이미지를 사다리꼴로 비틀게 하는 액션코드가 있나요? (4) 여름 2025-07-01
2700033 배경에 그라데이션을 넣으려고 하는데요.. (4) 화이티 2025-07-01
2700005 [질문] TextField 객체의 실제 높이 알아오는 방법 ? 천사의눈물 2025-07-01
2699978 FileReferenceList를 이용하여 업로드시 자꾸 실행속도가 느리다는 팝업이... (10) 데이비드 2025-06-30
2699944 자바스크립트가 많은 사이트는... (6) 희나리 2025-06-30
2699918 브라우저마다 다른 input과 텍스트 정렬 (3) 늘봄 2025-06-30
2699887 동적텍스트를 그래픽으로?? (2) 족장 2025-06-30
2699862 scope넣기 (1) 아인 2025-06-29
2699835 exe로 만드는 방법을....알려주세요.. (5) 방방 2025-06-29
2699809 롤오버할때 백그라운드 이미지로할때 alt설명은 어떻게해야하죠?..ㅠ (4) 반혈 2025-06-29
2699757 리스트뷰에 있는 내용을 랜덤으로 추출 세실 2025-06-28
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com