Help with adding collision to GridMove script
Hello! I would really appreciate if anyone could help me add collision to this script. I have tried using different colliders both on the character and the objects that the character should not be able to go through. Therefore i think i need to add something to the code instead, but i have no idea where to start. I'm still kinda new to unity and programming and would appreciate any help i could get.
Current code:
using System.Collections;
using UnityEngine;
class GridMove : MonoBehaviour
{
private float moveSpeed = 3f;
private float gridSize = 1f;
private enum Orientation
{
Horizontal,
Vertical
};
private Orientation gridOrientation = Orientation.Horizontal;
private bool allowDiagonals = false;
private bool correctDiagonalSpeed = true;
private Vector2 input;
private bool isMoving = false;
private Vector3 startPosition;
private Vector3 endPosition;
private float t;
private float factor;
public void Update()
{
if (!isMoving)
{
input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
if (!allowDiagonals)
{
if (Mathf.Abs(input.x) > Mathf.Abs(input.y))
{
input.y = 0;
}
else
{
input.x = 0;
}
}
if (input != Vector2.zero)
{
StartCoroutine(move(transform));
}
}
}
public IEnumerator move(Transform transform)
{
isMoving = true;
startPosition = transform.position;
t = 0;
if (gridOrientation == Orientation.Horizontal)
{
endPosition = new Vector3(startPosition.x + System.Math.Sign(input.x) * gridSize,
startPosition.y, startPosition.z + System.Math.Sign(input.y) * gridSize);
}
else
{
endPosition = new Vector3(startPosition.x + System.Math.Sign(input.x) * gridSize,
startPosition.y + System.Math.Sign(input.y) * gridSize, startPosition.z);
}
if (allowDiagonals && correctDiagonalSpeed && input.x != 0 && input.y != 0)
{
factor = 0.7071f;
}
else
{
factor = 1f;
}
while (t < 1f)
{
t += Time.deltaTime * (moveSpeed / gridSize) * factor;
transform.position = Vector3.Lerp(startPosition, endPosition, t);
yield return null;
}
isMoving = false;
yield return 0;
}
}
Your answer
Follow this Question
Related Questions
How to make gridbased movement while also using collision? 0 Answers
How can i make my grid controller stop after finding a "wall" 1 Answer
how do i collide and kill the enemy while pressing space Unity 5 C# 2 Answers
[Unity 2D]Grid Based Character Movement Issues with Vector3D.movetowards 0 Answers
Collision Detection between two different Prefabs doesnt work 1 Answer