- Home /
Character Can't Move After Position Change
It would seem that I am able to successfully move my character from one location to another. However, there seems to be a major problem with the actual transportation itself. Whenever the script executes itself successfully, the character no longer is able to move in any direction. My assumption is that another script is sticking him there, or perhaps the position the character is being moved to is being constantly updated to the specific location. Regardless, here are the scripts. I hope you can help!
void OnTriggerEnter()
{
//Need ten to win the game.
if (collectedEnergy > neededEnergy - 1)
{
GameObject.FindGameObjectWithTag("Player").transform.position = new Vector3(66, 6f, 176);
}
}
And the second line
public class CharacterMovement : MonoBehaviour
{
public float speed = 6f;
public float turnSpeed = 60f;
public float turnSmoothing = 15f;
private Vector3 movement;
private Vector3 turning;
private Animator anim;
private Rigidbody playerRigidbody;
void Awake()
{
//Get references
anim = GetComponent<Animator>();
playerRigidbody = GetComponent<Rigidbody> ();
}
void FixedUpdate()
{
//Store input axes
float lh = Input.GetAxisRaw ("Horizontal");
float lv = Input.GetAxisRaw ("Vertical");
}
void Move(float lh, float lv)
{
//Move Player
movement.Set (lh, 0f, lv);
movement = movement.normalized * speed * Time.deltaTime;
playerRigidbody.MovePosition (transform.position + movement);
if (lh != 0f || lv != 0f)
{
Rotating(lh, lv);
}
}
void Rotating(float lh, float lv)
{
Vector3 targetDirection = new Vector3 (lh, 0f, lv);
Quaternion targetRotation = Quaternion.LookRotation (targetDirection, Vector3.up);
Quaternion newRotation = Quaternion.Lerp (GetComponent<Rigidbody> ().rotation, targetRotation, turnSmoothing * Time.deltaTime);
GetComponent<Rigidbody> ().MoveRotation (newRotation);
}
void Animating(float lh , float lv)
{
bool running = lh != 0f || lv != 0f;
anim.SetBool ("IsRunning", running);
}
}
Answer by obses · Nov 27, 2016 at 03:03 PM
I think that you are not casting your Move(float lh, float lv). It should be placed in fixed update:
void FixedUpdate()
{
//Store input axes
float lh = Input.GetAxisRaw ("Horizontal");
float lv = Input.GetAxisRaw ("Vertical");
move(lh, lv);
}
Your answer
Follow this Question
Related Questions
Character Can't Move After Teleporting? 0 Answers
Networked position interpolation implementation (not Dead Reckoning)? 1 Answer
Why is root motion reduced once I apply the animation? 0 Answers
Help!How to validate the client position in headless unity? 0 Answers
How to change game object position smoothly not snapping to the position 1 Answer