더보기

쿠키런 프로젝트 시리즈
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

 

자바 스윙 쿠키런 만들기 mapMove() 메서드 (프로젝트 진행)

https://ondolroom.tistory.com/299 자바 스윙 쿠키런 만들기 MyPanel 생성자 수정 (프로젝트 진행) https://ondolroom.tistory.com/298 자바 스윙 쿠키런 만들기 전역 변수 선언하기 (프로젝트 진행) 들어가기 전..

ondolroom.tistory.com

이번 편에는 위 코드 중 장애물에 피격 되었을 경우 발동되는 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로 변경하고

무적을 종료한다.

 

다음편에 계속

 

 

+ Recent posts