Bugs in my game

Hi

my project:

I am just trying to learn in unity, so far so good I guess. Everything is terribly slow but I got this after 5 hours or so. Which is nice. I just have some problems and no idea how to solve it.

  • Sometimes I have to press a key twice to move. ( using Input.GetKey(“d”) and Input.GetKeyDown(“right”) - different just to try behavior. )
  • I do not know how to make it move on a grid by 1smoothly (using Rigidbody and stuff) so I just made it teleport instead for now.
  • I am not sure how can I move the ground towards me. Now it is set to move towards the player and every time position Z is 100, it adds 100 to Z. But if I add texture this is quite noticeable and it looks ugly. Other solution might be to spawn one platform every time player gets to an end and despawn old one or something like that. Not sure if that would be smooth. To be honest, I have no idea how to do it to make it look nice.

In near future, I want to add death and respawns and menu and stuff. Maybe static camera would be better

If only I knew how to do it :smiley: well, I will try to learn it as other things.

Thank you for your time <3
Have a wonderful day

hello, you need something like Time.deltaTime, this can make you movement more smooth
here is tutorial

and if you need something like a rigidbody controller, which allous you to move in scene, I have it too, but only woth out camera rotation.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rigidbody_Controller : MonoBehaviour {
// Script works perfect only need to set camera rotation and such stuff

public Rigidbody rb; // put your player here
// and you need collider + Rigidbody component

public float speed = 10.0f;
public float gravity = 10.0f;
public float maxVelocityChange = 10.0f;
public bool canJump = true;
public float jumpHeight = 2.0f;
private bool grounded = false;

void Awake () {
	rb.freezeRotation = true;
	rb.useGravity = false;

}

void FixedUpdate () {
	if (grounded) {
		// Calculate how fast we should be moving
		Vector3 targetVelocity = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
		targetVelocity = transform.TransformDirection(targetVelocity);
		targetVelocity *= speed;

		// Apply a force that attempts to reach our target velocity
		Vector3 velocity = rb.velocity;
		Vector3 velocityChange = (targetVelocity - velocity);
		velocityChange.x = Mathf.Clamp(velocityChange.x, -maxVelocityChange, maxVelocityChange);
		velocityChange.z = Mathf.Clamp(velocityChange.z, -maxVelocityChange, maxVelocityChange);
		velocityChange.y = 0;
		rb.AddForce(velocityChange, ForceMode.VelocityChange);

		// Jump
		if (canJump && Input.GetButton("Jump")) {
			rb.velocity = new Vector3(velocity.x, CalculateJumpVerticalSpeed(), velocity.z);
		}
	}

	// We apply gravity manually for more tuning control
	rb.AddForce(new Vector3 (0, -gravity * rb.mass, 0));

	grounded = false;
}

void OnCollisionStay () {
	grounded = true;    
}

float CalculateJumpVerticalSpeed () {
	// From the jump height and gravity we deduce the upwards speed 
	// for the character to reach at the apex.
	return Mathf.Sqrt(2 * jumpHeight * gravity);
}

}