- Home /
Rigidbody grid based movement in a 3D game
Hey, i am new to unity ( Probably not the first time you have heard that...) and i have a small movement script that moves a 1 by 1 cube in a grid like plain on the X and Z axis in a 3D environment.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
private bool canMove = true, moving = false;
private int speed = 15;
private Vector3
void Update()
{
if (canMove)
{
pos = transform.position;
move();
}
if (moving)
{
if(transform.position == pos)
{
moving = false;
canMove = true;
move();
}
transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
}
}
private void move()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
canMove = false;
moving = true;
pos += Vector3.forward;
}
//This is repeated for every arrow key to move in all directions.
}
}
The movement is working just the way i want it to, when i press the arrow keys the cube moves to the according direction one length of the cube ( does that make sense?).
So my problem comes in when i try to add physics to the cube (trying to make invisible walls to limit the players movement).
When the Cube collides with an object it goes crazy ( glitching all over the place) i am pretty sure that is caused by the transform.position lines, i think those don't take the rigidbody physics into mind when moving my object?
So i probably need to change those, but i don't know to what command, i have searched google but these type of questions are hard to google since i don't really know what to look for.
So can any of you help me convert the code so that:
The cube moves smoothly to the next "grid"
The cube is affected by gravity and cannot pass trough certain objects/walls
It's simple so i actually know what is happening since this project is just a learning type situation.
Thanks in advance if you can help me :)