Good, I am developing a project for the university and I am not very good at programming. I’m doing a top down mobile game and I need the character to move with buttons but I don’t want to lose the movement in a grid, could you please help me? I’m desperate
this code;
system
December 15, 2019, 10:36am
2
Please, post your code here, using code tags, thank you.
system
December 15, 2019, 12:44pm
3
There is no way your script will work if the code is translated…
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum Direction
{
up, down, right, left
}
public class Movement : MonoBehaviour
{
Animator anim;
Vector2 targetPosition;
Direction direction;
public float speed = 5f;
public LayerMask obstacle;
private void Start()
{
anim = GetComponent<Animator>();
targetPosition = transform.position;
direction = Direction.down;
}
void Update()
{
Vector2 axisDirection = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
anim.SetInteger("Direccion", (int)direction);
if (axisDirection != Vector2.zero && targetPosition == (Vector2)transform.position)
{
if (Mathf.Abs(axisDirection.x) > Mathf.Abs(axisDirection.y))
{
if (axisDirection.x > 0)
{
direction = Direction.right;
if (!CheckCollision)
targetPosition += Vector2.right;
}
else
{
direction = Direction.left;
if (!CheckCollision)
targetPosition -= Vector2.right;
}
}
else
{
if (axisDirection.y > 0)
{
direction = Direction.up;
if (!CheckCollision)
targetPosition += Vector2.up;
}
else
{
direction = Direction.down;
if (!CheckCollision)
targetPosition -= Vector2.up;
}
}
}
transform.position = Vector2.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);
}
bool CheckCollision
{
get
{
bool col = true;
RaycastHit2D rh;
Vector2 dir = Vector2.zero;
if (direction == Direction.down)
dir = Vector2.down;
if (direction == Direction.up)
dir = Vector2.up;
if (direction == Direction.left)
dir = Vector2.left;
if (direction == Direction.right)
dir = Vector2.right;
rh = Physics2D.Raycast(transform.position, dir, 1, obstacle);
return rh.collider != null;
return col;
}
}
}
sorry