- Home /
Question by
Phenelo · Dec 10, 2013 at 01:10 AM ·
movementcharactercontrollervelocity
Problem with Character Controller movement left/right dash
Good day!
I'm having a problem with a simple lerp effect for dashing the character to left/right.
Here is my code:
using UnityEngine;
using System.Collections;
public class ChangeLane : MonoBehaviour {
public bool toChangeLane;
public float changeLaneDuration;
public bool isChangingLane, toLeft, toRight;
public GameObject leftLaner, rightLaner, centerLaner;
public CharacterController dogCtrl;
void Awake()
{
dogCtrl = GetComponent<CharacterController>();
}
void LateUpdate()
{
if(toChangeLane)
{
if(isChangingLane)
{
toChangeLane = false;
}
else
{
StartCoroutine(ChangeDogLane());
toChangeLane = false;
}
}
}
IEnumerator ChangeDogLane()
{
float timer = 0.0f;
float newX = 0.0f, oldX = 0.0f;
Vector3 targetPosition = new Vector3(0f, 0f, 0f);
isChangingLane = true;
float distance = 0.0f, speed = 0.0f, direction = 0.0f;
if(toLeft)
{
targetPosition = leftLaner.transform.position;
direction = -1.0f;
}
else if(toRight)
{
targetPosition = rightLaner.transform.position;
direction = 1.0f;
}
Debug.Log("Dog started changing lane.");
distance = Vector3.Distance(centerLaner.transform.position, targetPosition); //centerLaner.position == transform.position
Debug.Log("Distance: " +distance);
speed = distance/ changeLaneDuration; // distance between lanes
while(isChangingLane)
{
timer += Time.deltaTime;
dogCtrl.Move(new Vector3(direction * speed * Time.deltaTime, 0f, 0f));
if(timer >= changeLaneDuration)
{
// transform.position = targetPosition;
isChangingLane = false;
}
yield return null;
}
}
}
The problem is the x-axis' last value is not exact resulting the dog not centered in the new lane. Though I know I can snap the transform to the exact position, when the x-value have a large excess value, it makes the camera snap significantly.
Need help and thank you very much in advance. :)
Comment
Your answer
Follow this Question
Related Questions
Adding force to the charactercontroller for walljump 1 Answer
How to keep velocity and add onto it from any rotation. 1 Answer
Rotate character to the moving direction problems? 2 Answers
Character too floaty after jumping and grappling.,Grapple too floaty 0 Answers
Character Controller Movement 0 Answers