728x90
반응형
SMALL
공격 버튼을 클릭 했을 때 이벤트를 아래와 같이 설정
1. 버튼을 누르는 동안 fill amount 값이 감소, text값이 100에서 0으로 줄어듬(정수만 출력)
2. 버튼 fill amount 값이 0이 되었을 때 버튼 기능 off
3. 버튼에서 손을 때면 fill amount 값이 증가, text값이 0에서 100까지 증가(정수만 출력)
4. 작성한 코드를 버튼 오브젝트 Event Trigger 컴포넌트에 입력 (Pointer Up, Pointer Down)
//공격 버튼 ui
public Button AttackButton; // 애니메이션을 제어할 버튼
public Animator AtteackAnimator; // 애니메이터 컴포넌트
private bool AttackButtonPressed = false; // 버튼이 눌렸는지 여부를 나타내는 변수
public Image AttackFill; // fill amount 값을 변경할 이미지
private bool CanPressAttackButton = true; // 버튼을 누를 수 있는지 여부
public float AttackFillSpeed =0.01f; // fill amount가 증가 또는 감소할 속도
public Text AttackCount;
// 공격 버튼을 클릭했을 때 호출되는 함수
public void AttackButtonDown()//유니티 인스펙터 Event Trigger OnPointerDown에 연결
{
AttackButtonPressed = true; // 버튼을 누르거나 놓을 때마다 상태 변경
// 버튼이 눌렸을 때 애니메이션을 시작하고 스프라이트를 보이도록 설정
AtteackAnimator.SetBool("IsPressed", true);
AtteackAnimator.gameObject.SetActive(true);
}
// 공격 버튼을 놓았을 때 호출되는 함수
public void AttackButtonUp()//유니티 인스펙터 Event Trigger OnPointerUp에 연결
{
AttackButtonPressed = false;
// 애니메이션을 재생을 멈춤
AtteackAnimator.SetBool("IsPressed", false);
AtteackAnimator.gameObject.SetActive(false);
}
// fill amount 값에 따라 text 값을 조정하는 함수
private void UpdateTextValue()
{
// fill amount 값이 1일 때 text 값을 100으로 설정
if (AttackFill.fillAmount == 1)
{
AttackCount.text = "100";
}
// fill amount 값이 0일 때 text 값을 0으로 설정
else if (AttackFill.fillAmount == 0)
{
AttackCount.text = "0";
}
// 그 외의 경우에는 fill amount 값을 0에서 100까지 정수로 변환하여 표시
else
{
int percentage = Mathf.RoundToInt(AttackFill.fillAmount * 100);
AttackCount.text = percentage.ToString();
}
}
void FixedUpdate()
{
// 공격 버튼을 누르고 있는 동안에만 애니메이션을 계속해서 재생 + fill amount 값을 감소시킴
if (AttackButtonPressed)
{
// fill amount 값을 감소시킴
AtteackAnimator.SetBool("IsPressed", true); // 애니메이션을 계속 재생
AttackFill.fillAmount -= Time.deltaTime; // fill amount 값을 감소 시 킴
// fill amount 값이 0이 되면 버튼을 비활성화
if (AttackFill.fillAmount <= 0)
{
AttackButton.interactable = false;
AtteackAnimator.gameObject.SetActive(false);
}
// fill amount 값에 따라 text 값을 조정
UpdateTextValue();
}
else
{
// 버튼이 눌리지 않은 경우 fill amount 값을 증가시킴
if (AttackFill.fillAmount < 1)
{
AttackFill.fillAmount += AttackFillSpeed * Time.deltaTime; // fill amount 값을 증가시킴
AttackButton.interactable = true;
}
// fill amount 값에 따라 text 값을 조정
UpdateTextValue();
}
}
728x90
반응형
LIST
'▶ SCP전쟁 개발일지' 카테고리의 다른 글
#011 파이어베이스 유니티 구현 (서버 연동, 이메일 계정 생성, 로그인, 로그아웃) (0) | 2024.04.09 |
---|---|
#010 애니메이션 원하는 구간에 스크립트 코드 실행하기 (음악 재생, 비활성화 등) (0) | 2024.04.01 |
#008 스크롤 가로 리스트 제작 (도감 목록) (0) | 2024.02.27 |
#007 2D롤플레잉게임 배경 타일맵 제작 (0) | 2024.02.23 |
#006 카메라 매니저 (캐릭터 이동 추적, 카메라 떨림 방지) (0) | 2024.02.23 |
댓글