이해도 | 입문자 |
---|---|
게임버전 (JE) | 1.19.2 |
게임버전 (BE) | 관련없음 |
발사체로 유리를 두 번 맞추면 성공이라는 메시지가 나오고 다시 유리를 두 번 맞춰도 성공이라는 메시지가 나오게 할려고 했는데 안되 가지고요 ㅠㅜㅠ 도와주실 분 있으면 도와주시면 감사하겠습니다
아래는 코드입니다
@EventHandler public void aedpopq(ProjectileHitEvent e) { int i = 1; int i1 = 2; Player p = (Player) e.getHitEntity(); if (e.getEntity() instanceof Snowball) { if (e.getHitBlock().getType() == Material.GLASS) { System.out.println(i1 - i); if (i1 == 0) { p.sendMessage("성공"); i1 = 2; } } } }
Dalsu
16 일 전코드 알고리즘 자체가 잘못되었습니다. 자바를 조금 더 배우고 오시는걸 추천드립니다
d1092
16 일 전그럼 어디에서 잘못됐는지 알수 있을까요?
하이라이트|highright
16 일 전1. i1 값이 method 안에 있음 ( method 밖에 나두는 형식으로 바꿔야함 )
2. i1 값이 바뀌지 않음( i1 -1 은 값을 바꾸는게 아닙니다)
코드 느낌마다 다르겠지만 번외
3. 위에걸 고쳤어도 다른 플레이어 혹은 다른 위치의 유리에 쏘더라도 성공으로 뜨게됨
0reo
16 일 전메소드 안에서만 처리되는 지역변수가지고는 못만듭니다 저거도 제가 전에 딴분한테 써드렸던거 코드 어찌 변경해서 쓰시는거같은데 eventhandler 어노테이션이 붙은경우에는 이벤트가 일어났을때 호출되는거라.. 호출당할때마다 매번 초기화당하는걸 아시면 될거같아요
0reo
16 일 전테스트 안해봤습니다
0reo
16 일 전윗분 댓글대로 구현하려면 머리 좀 아플거에요 ㅋㅋ 3번에 집어주신거 고치려면 메타데이터쓰면 편할겁니다
d1092
15 일 전앗 알겠습니다!
d1092
15 일 전어.. 저 그 위에 코드를 해보았는데 안돼가지고요.. 어떻게 해결할수 있을까용?
0reo
15 일 전e.getEntity 대신에 e.getEntity().getShooter()로 바꿔보세요
d1092
15 일 전아 감사합니당 혹시 실례가 안된다면 눈덩이나 엔더진주 말고 화살로만 맞췄을 때 작동되는 방법도 알려주실 수 있나용?
0reo
15 일 전e.getEntity instanceof Arrow 조건문 넣으세요
0reo
15 일 전자바 기초도좀 익히시는게 나을거같아요 그리고