쿠키런 프로젝트 시리즈
1.준비
https://ondolroom.tistory.com/297
2.전역공간
https://ondolroom.tistory.com/298
3.JPanel생성자
https://ondolroom.tistory.com/299
4.mapMove메서드
https://ondolroom.tistory.com/300
5.hit메서드
https://ondolroom.tistory.com/301
6.fall메서드
https://ondolroom.tistory.com/302
7.jump메서드
https://ondolroom.tistory.com/303
8.paintComponent 및 결과
https://ondolroom.tistory.com/304
https://ondolroom.tistory.com/300
이번 편에는 위 코드 중 장애물에 피격 되었을 경우 발동되는 hit메서드를 만들어 보려고 한다.
더보기를 눌러 전체코드 확인
void hit() {
new Thread(new Runnable() {
@Override
public void run() {
c1.setInvincible(true); // 쿠키를 무적상태로 전환
System.out.println("피격무적시작");
c1.setHealth(c1.getHealth() - 100); // 쿠키의 체력을 100 깎는다
c1.setImage(hitIc.getImage()); // 쿠키를 부딛힌 모션으로 변경
c1.setAlpha(80); // 쿠키의 투명도를 80으로 변경
try { // 0.5초 대기
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(c1.getImage() == hitIc.getImage()) { // 0.5초 동안 이미지가 바뀌지 않았다면 기본이미지로 변경
c1.setImage(cookieIc.getImage());
}
for (int j = 0; j < 11; j++) { // 2.5초간 캐릭터가 깜빡인다. (피격후 무적 상태를 인식)
if(c1.getAlpha() == 80) { // 이미지의 알파값이 80이면 160으로
c1.setAlpha(160);
} else { // 아니면 80으로
c1.setAlpha(80);
}
try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
c1.setAlpha(255); // 쿠키의 투명도를 정상으로 변경
c1.setInvincible(false);
System.out.println("피격무적종료");
}
}).start();
}
설명
피격시 새 쓰레드 가동
피격 이펙트가 도는 동안에도 우리는 움직여야 하기 때문에
따로 쓰레드를 만들어 줘야한다.
피격시 필요한 변수 수정
피격이되면, 캐릭터 상태가 무적(Invincible)이 되니 true로 바꿔주자
( 생성자에서 무적인 경우에는 낙사하지 않도록 미리 제작해 두었다는 점을 참고하자.)
부딛히게 되면 체력이 100 깎이고 부딛힌 모션으로 변경된다.
그리고 부딛힌 점을 확인하기 위해 캐릭터의 투명도를 80으로 내린다.
(0투명 ~ 반투명 ~ 255불투명)
그리고 0.5초간 피격모션이 끝나도록 다른 이미지로 변경이 되지 않았다면 달리는 모션으로 다시 바꿔준다.
캐릭터 깜빡이게 하기
캐릭터가 무적인 상태를 확실히 보여주기 위해 캐릭터를 깜빡이게 할 것이다.
for문으로 2.5초간 깜빡이게 되는데 투명도가 80일경우 160으로, 160일 경우 80으로 변경된다.
마지막으로 무적이 끝나기 전에 투명도를 255로 변경하고
무적을 종료한다.
다음편에 계속
'Programming Language > Java' 카테고리의 다른 글
자바 스윙 쿠키런 만들기 jump() 메서드 (프로젝트 진행) (0) | 2020.05.06 |
---|---|
자바 스윙 쿠키런 만들기 fall() 메서드 (프로젝트 진행) (0) | 2020.05.06 |
자바 스윙 쿠키런 만들기 mapMove() 메서드 (프로젝트 진행) (0) | 2020.05.06 |
자바 스윙 쿠키런 만들기 MyPanel 생성자 수정 (프로젝트 진행) (2) | 2020.05.06 |
자바 스윙 쿠키런 만들기 전역 변수 선언하기 (프로젝트 진행) (2) | 2020.05.05 |