using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpiderMine
{
//생성자
public SpiderMine()
{
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Vurture : MonoBehaviour
{
List<SpiderMine> mines;
private const int CAPACITY = 3; //고정상수
public GameObject minePrefab; //프리팹만들기
Vector3 mousePos, transPos, targetPos;
private void Awake()
{
Debug.LogFormat("{0}(이)가 생성되었습니다.", this);
}
void Start()
{
this.mines = new List<SpiderMine>();
for (int i = 0; i < CAPACITY; i++)
{
this.CreateMine(); //최대 갯수만큼 지뢰 생성하기
}
}
void Update()
{
//마우스 클릭해서 움직이기
if (Input.GetMouseButtonDown(0))
{
CalTargetPos();
MoveToTarget();
}
//마인 떨어뜨리기
if (Input.GetKeyDown(KeyCode.I))
{
this.LandMine();
}
}
private void CreateMine() //마인 생성하기
{
var mine = new SpiderMine();
this.mines.Add(mine);
Debug.LogFormat("{0}을 생성 했습니다. ({1}/{2})", mine, this.mines.Count, CAPACITY);
}
private void MoveToTarget() //타겟위치로 이동하기
{
transform.position = targetPos;
}
private void CalTargetPos() //타겟위치 계산하기
{
mousePos = Input.mousePosition;
transPos = Camera.main.ScreenToWorldPoint(mousePos);
targetPos = new Vector3(transPos.x,transPos.y, 0);
}
//지뢰를 매설하기
void LandMine()
{
if (mines.Count > 0) //지뢰가 있으면
{
var mine = this.mines[mines.Count - 1];
this.mines.Remove(mine); //지뢰매설하기
//프리팹 벌처 위치에 생성하기
this.minePrefab.transform.position = this.transform.position;
Instantiate(this.minePrefab);
Debug.LogFormat("지뢰를 매설 했습니다. ({0}/{1})", this.mines.Count, CAPACITY);
}
else
{
Debug.Log("<color=red>더이상 지뢰가 없습니다.</color>");
}
}
}

마우스를 클릭한 위치로 이동하기 힘들어따~~~~
* 참고
오브젝트가 궤적을 남기면서 이동하고 싶다면
void Update()
{
//마우스 클릭해서 움직이기
if (Input.GetMouseButtonDown(0))
{
CalTargetPos();
MoveToTarget();
}
}
private void CalTargetPos()
{
mousePos = Input.mousePosition;
transPos = Camera.main.ScreenToWorldPoint(mousePos);
targetPos = new Vector3(transPos.x,transPos.y, 0);
}
//오브젝트가 궤적을 남기면서 이동하고 싶다면
private void MoveToTarget()
{
transform.position = Vector3.MoveTowards(transform.position,targetPos,Time.deltaTime*Speed);
}
마우스를 클릭한 상태에서 이동하고 싶다면
void Update()
{
//마우스 클릭한 상태에서 이동하고 싶다면
if (Input.GetMouseButton(0))
{
CalTargetPos();
MoveToTarget();
}
}
private void CalTargetPos()
{
mousePos = Input.mousePosition;
transPos = Camera.main.ScreenToWorldPoint(mousePos);
targetPos = new Vector3(transPos.x,transPos.y, 0);
}
//오브젝트가 궤적을 남기면서 이동하고 싶다면
private void MoveToTarget()
{
transform.position = Vector3.MoveTowards(transform.position,targetPos,Time.deltaTime*Speed);
}
'게임개발 > 게임플랫폼 응용 프로그래밍' 카테고리의 다른 글
시즈탱크 2단계 (0) | 2024.02.29 |
---|---|
시즈탱크 1단계 - 에러 수정전 (1) | 2024.02.29 |
DropShip in BionicUnits (0) | 2024.02.28 |
Enum , List<> , Foreach 연습하기 (0) | 2024.02.28 |
가까운 적 따라가면서 없애기 (0) | 2024.02.28 |