- Home /
Character moving weirdly
it moves when it comes to its destination which it isnt supposed to do.
Here is a video of how it works and when i does its weird thing. https://youtu.be/Pzr2hQsW9sI
Here is the script for moving the character
void Update ()
{
Vector3 myposition = GetComponent<Rigidbody> ().position;
if (Input.GetMouseButton (0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
Physics.Raycast (ray, out hit, 100.0f);
float hitRoundX = (float)Mathf.FloorToInt (hit.point.x);
float hitRoundZ = (float)Mathf.FloorToInt (hit.point.z);
Target = new Vector3 (hitRoundX, 3f, hitRoundZ);
moving = true;
}
Vector3 totarget = Target - myposition;
totarget.Normalize ();
myposition = myposition + (totarget * enemySpeed * Time.deltaTime);
if (moving == true)
{
GetComponent<Rigidbody> ().MovePosition (myposition);
}
if (Target == myposition)
{
moving = false;
clicks = 0;
}
}
void OnCollisonEnter (Collision col)
{
Destroy (gameObject);
}
}
Answer by Sonky108 · Aug 29, 2018 at 07:33 AM
I bet that you should have not check for (Target == myposition)
since they are Vector3s and will almost never be equals. You should check for something like (Target - myposition).magnitude <= error
and let the error be around 0.01f
depends on scale of your game
Glad it helped :) It wasn't working because moving
flag will almost never be set to false because (Target == myposition)
was false. It result with flicker since you were executing $$anonymous$$ovePosition even though character was near the target location.
Your answer
Follow this Question
Related Questions
Apply ridged body to game object when clicked. 1 Answer
Is it Posable to make you'r own Camera Component and not use the standard Unity Camera Component? 1 Answer
Get Script from gameobject knowing only parent script 1 Answer
How do I fix these two errors in my Number Wizard Game? 2 Answers
Distructible plants and dirt. 0 Answers