오늘은 클리커 게임중의 핵심인? 오토 클릭을 만들어볼것이다.
using System.Collections;
using UnityEngine;
public class AutoClickController : MonoBehaviour
{
public PlayerController playerController; // PlayerController를 참조할 변수
[Header("Auto Click Settings")]
public float clickInterval = 1f; // 자동 클릭 간격
public float attackRange = 5f; // 공격 범위
private bool isAutoClicking = false; // 자동 클릭 상태를 나타내는 변수
private void Start()
{
// 자동 클릭 코루틴 시작
Debug.Log("Starting AutoClick Coroutine.");
StartCoroutine(AutoClick());
}
private IEnumerator AutoClick()
{
Debug.Log("AutoClick Coroutine started."); // 자동 클릭 코루틴 시작 디버그 메시지 출력
while (true)
{
if (isAutoClicking)
{
Debug.Log("AutoClick triggered."); // 자동 클릭 트리거 디버그 메시지 출력
// 주변의 적을 찾아 공격
AttackNearbyEnemies();
}
yield return new WaitForSeconds(clickInterval); // 설정된 간격만큼 대기
}
}
private void AttackNearbyEnemies()
{
// 플레이어 주변의 적을 찾아 공격하는 메서드
Collider2D[] hitColliders = Physics2D.OverlapCircleAll(playerController.transform.position, attackRange); // 주변 적 찾기
Debug.Log("Checking for enemies in range: " + hitColliders.Length + " found."); // 발견된 적 수 디버그 메시지 출력
foreach (var hitCollider in hitColliders)
{
if (hitCollider.CompareTag("Enemy"))
{
Enemy enemy = hitCollider.GetComponent<Enemy>(); // 적 객체 가져오기
Debug.Log("Enemy found: " + enemy.name); // 발견된 적의 이름 출력
playerController.EnemyAttack(enemy); // 플레이어가 적을 공격하도록 호출
break; // 한 번 공격 후 종료
}
}
}
public void ToggleAutoClicking()
{
// 자동 클릭 상태 토글하는 메서드
isAutoClicking = !isAutoClicking; // 상태 반전
if (isAutoClicking)
{
Debug.Log("오토 시작"); // 자동 클릭 시작 디버그 메시지 출력
}
else
{
Debug.Log("오토 종료"); // 자동 클릭 종료 디버그 메시지 출력
}
}
private void OnDrawGizmosSelected()
{
// 선택된 상태에서 표시되는 기즈모 설정
Gizmos.color = Color.red; // 기즈모 색상 설정
Gizmos.DrawWireSphere(playerController.transform.position, attackRange); // 플레이어 주변의 공격 범위를 와이어 구체로 그림
}
}
이렇게 오토클릭컨트롤이라는 스크립트를 작성하고
오토클릭을 활성화 시키기 위해서는 버튼이 필요하다.

버튼을 만들고 Auto Click Controller스크립트를 컴포넌트 해주고 플레이어 컨트롤러 안에 플레이어를 넣어준후에 On Click에 버튼을 넣고 ToggleAuto를 넣어주면된다.
버튼도 이제 눌려진상태와 안눌러진 상태를 알기위해서 이미지를 바꿔주기로 했다.
버튼 이미지 바꾸기
using UnityEngine;
using UnityEngine.UI;
public class ButtonToggleImage : MonoBehaviour
{
public Sprite normalSprite; // 버튼이 안 눌렸을 때 이미지
public Sprite pressedSprite; // 버튼이 눌렸을 때 이미지
private Image buttonImage; // 버튼의 Image 컴포넌트
private bool isPressed = false; // 버튼의 눌림 상태
void Start()
{
// 버튼의 Image 컴포넌트 가져오기
buttonImage = GetComponent<Image>();
}
public void OnButtonClick()
{
// 버튼을 클릭할 때마다 Toggle 상태 변경
isPressed = !isPressed;
// Toggle 상태에 따라 이미지 변경
if (isPressed)
{
// 눌린 상태 이미지로 변경
if (pressedSprite != null)
{
buttonImage.sprite = pressedSprite;
}
}
else
{
// 안 눌린 상태 이미지로 변경
if (normalSprite != null)
{
buttonImage.sprite = normalSprite;
}
}
}
}
이 스크립트도 버튼에 컴포넌트 해준후

이렇게 노멀 sprite와 pressed sprite를 두개 넣어준후 On Click에 할당해주면 완성이 된다.
