basic movement
This commit is contained in:
parent
aba5310742
commit
01a1278465
25 changed files with 1140 additions and 540 deletions
76
Assets/Scripts/PlayerEntityMovement.cs
Normal file
76
Assets/Scripts/PlayerEntityMovement.cs
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerEntityMovement : MonoBehaviour
|
||||
{
|
||||
//unsure if this should also move enemies but who knows!
|
||||
#region Statication
|
||||
|
||||
public static PlayerEntityMovement instance;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (instance != null && instance != this)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
instance = this;
|
||||
}
|
||||
|
||||
#endregion
|
||||
[SerializeField] private Grid gameplayGrid;
|
||||
|
||||
public Entity selectedEntity;
|
||||
public GameObject templateObject;
|
||||
public bool isMoving;
|
||||
|
||||
private Vector3 mouseWorldPos;
|
||||
private Camera cam;
|
||||
|
||||
private float debounceTime;
|
||||
[SerializeField] private float debounceDuration;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
cam = Camera.main;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
mouseWorldPos = cam.ScreenToWorldPoint(Input.mousePosition);
|
||||
if (debounceTime > 0)
|
||||
{
|
||||
debounceTime -= Time.deltaTime;
|
||||
}
|
||||
if (isMoving)
|
||||
{
|
||||
templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
||||
if (Input.GetMouseButtonDown(0) && debounceTime <= 0)
|
||||
{
|
||||
SelectLocation();
|
||||
isMoving = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SelectEntity(Entity entitySelected)
|
||||
{
|
||||
selectedEntity = entitySelected;
|
||||
isMoving = true;
|
||||
debounceTime = debounceDuration;
|
||||
CreateTemplate();
|
||||
}
|
||||
|
||||
private void SelectLocation()
|
||||
{
|
||||
selectedEntity.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
||||
templateObject.SetActive(false);
|
||||
}
|
||||
|
||||
private void CreateTemplate()
|
||||
{
|
||||
templateObject.SetActive(true);
|
||||
templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue