- Home /
change character controller's position on click
i am trying to move character controller towards an object(target) but i want keep distance from the target. i have used following code..in this code the character controller moves and reaches to the target. how can i keep distance between character controller and target ??
void MoveTowardsTarget(Vector3 target) {
var cc = GetComponent<CharacterController>();
var offset = target - transform.position;
//Get the difference.
if(offset.magnitude > .1f) {
//If we're further away than .1 unit, move towards the target.
//The minimum allowable tolerance varies with the speed of the object and the framerate.
// 2 * tolerance must be >= moveSpeed / framerate or the object will jump right over the stop.
offset = offset.normalized * moveSpeed;
//normalize it and account for movement speed.
cc.Move(offset * Time.deltaTime);
//actually move the character.
}
}
Thanx.
Haven't used it myself, but try to have a look at joints, especially the FixedJoint I suppose.
i don't think joint will help me. when i click my character controller moves but it move direct to target, i want some distance between target and character to view target.
Answer by Ed unity · Apr 23, 2014 at 06:09 PM
I see that you have the answer to your question already in the code, you just weren't aware that it was what you are trying to achieve.
if(offset.magnitude > .1f)
Assuming that this function is called each frame, change the .1f to some distance that you want the player character to stop from the destination point.
it worked thanks.. one more thing i want to make it work is that character controller covers distance according to the value of moveSpeed is set.
how can i smoothly move character controller to the object
@jack_sparrow my appologies for missing your comment. So long as you are using Time.deltaTime for the movement of your character and the above function is called each frame, the character should move to the destination smoothly. If you move speed is set very high, the character may appear to jitter as it moves along the surface, due to the large change in position each frame.
Your answer
Follow this Question
Related Questions
How to make a player move around a tower at a set distance? 1 Answer
‘CharacterController’ does not contain a definition for ‘Move’ 0 Answers
Using Input.GetAxis on a 2 Player Game 2 Answers
Natural Jump algorithm 2 Answers
CharacterController.Move not working in X and Z axis at the same time 0 Answers