- Home /
 
How to restrict to one axis
Hi, Im making a 3d sidescroller but I cant figure out how to restrict my enemy to just one axis
 var Distance;
 var Target : Transform;
 var lookAtDistance = 25.0;
 var chaseRange = 15.0;
 var attackRange = 5;
 var moveSpeed = 5.0;
 var Damping = 6.0;
 var attackRepeatTime = 1;
 
 var TheDammage = 10;
 
 private var attackTime : float;
 
 var controller : CharacterController;
 var gravity : float = 20.0;
 private var MoveDirection : Vector3 = Vector3.zero;
 
 function Start ()
 {
     attackTime = Time.time;
 }
 
 function Update ()
 {    
     if(RespawnMenu.playerIsDead == false)
     {
         Distance = Vector3.Distance(Target.position, transform.position);
         
         moveDirection = Vector3(0,0,Input.GetAxis("Horizontal"));
         
         if (Distance < lookAtDistance)
         {
             lookAt();
         }
         
         if (Distance > lookAtDistance)
         {
             renderer.material.color = Color.green;
         }
         
         if (Distance < attackRange)
         {
             attack();
         }
         else if (Distance < chaseRange)
         {
             chase ();        
         }
     }
 }
 
 function lookAt ()
 {
     renderer.material.color = Color.yellow;
     var rotation = Quaternion.LookRotation(Target.position - transform.position);
     transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
 }
 
 function chase ()
 {
     renderer.material.color = Color.red;
     
     moveDirection = transform.forward;
     moveDirection *= moveSpeed;
     
     moveDirection.y -= gravity * Time.deltaTime;
     controller.Move(moveDirection * Time.deltaTime);
 }
 
 function attack ()
 {
     if (Time.time >attackTime)
     {
         Target.SendMessage("ApplyDammage", TheDammage, SendMessageOptions.DontRequireReceiver);
         Debug.Log("shots fired");
         attackTime = Time.time + attackRepeatTime;
     }
 }
 
              Answer by Nomibuilder · Jan 09, 2015 at 06:44 AM
You can do it from RigidBody Properties. RigidBody>Constraints>Freez Position or Freez Rotation whatever you want. 
don't forget to accept the answer if this satisfy you :)
Answer by ownerfate · Jan 09, 2015 at 10:48 AM
give this a try, add it to the object that has the controller. just mess around with it,
( to keep it from spasing out set the Min and Max to the same number, :eg min = 90 max = 90 )
 var x : float;
 
 var y : float;
 
 var z : float;
 
 
 var minX : float;
 var maxX : float;
 
 var minY : float;
 var maxY : float;
 
 var minZ : float;
 var maxZ : float;
 
 
 function LateUpdate (){
 
 transform.localEulerAngles = new Vector3(x,y,z);
 
 }
 
 function Update(){
 
 clamp1();
 clamp2();
 clamp3();
 
 }
 
 
 function clamp1(){
 x = Mathf.Clamp(x, minX, maxX);
 
 }
  
 function clamp2(){
 y = Mathf.Clamp(y, minY, maxY);
 
 }
 function clamp3(){
 z = Mathf.Clamp(z, minZ, maxZ);
 
 }
 
 
              by doing that, you'll lock the object in that axis, unless you want some wiggle room, then just change the $$anonymous$$ and max to something along your style, :eg $$anonymous$$ = -90 max = 90
Your answer
 
             Follow this Question
Related Questions
X and Y Camera Movement 2 Answers
How can I move a controller in relation to the camera's axis? 2 Answers
Character controller, player y changes when pushing on colliders 1 Answer
Huh click and go script working 50% 0 Answers
Character Controller Movement - Different speeds on different axis 1 Answer