- Home /
 
               Question by 
               YesIPeeRainbows · Jul 18, 2016 at 06:28 PM · 
                collisioncharactercontrollercontrollerdetection  
              
 
              Ceiling collision detection
I would like my player to hit the ceiling and it's velocity to set to fallVel however I can't figure out how to use the collisionFlags with my CharacterController. Im not quite sure how to get around it., any Ideas?
 using UnityEngine;
 using System.Collections;
 
 public class CharacterController : MonoBehaviour
 {
     [System.Serializable]
     public class MoveSettings
     {
         public float forwardVel = 12;
         public float rotateVel = 100;
         public float jumpVel = 25;
         public float distToGrounded = 0.1f;
         public LayerMask ground;
     }
 
     [System.Serializable]
     public class PhysSettings
     {
         public float downAccel = 0.1f;
     }
 
     [System.Serializable]
     public class InputSettings
     {
         public float inputDelay = 0.1f;
         public string FORWARD_AXIS = "Vertical";
         public string TURN_AXIS = "Horizontal";
         public string JUMP_AXIS = "Jump";
     }
     public MoveSettings moveSetting = new MoveSettings();
     public PhysSettings physSetting = new PhysSettings();
     public InputSettings inputSetting = new InputSettings();
 
     Vector3 velocity = Vector3.zero;
     Quaternion targetRot;
     Rigidbody rBody;
     float forwardInput, turnInput, jumpInput;
 
     public Quaternion TargetRot
     {
         get { return targetRot; }
     }
 
     bool Grounded()
     {
         return Physics.Raycast(transform.position, Vector3.down, moveSetting.distToGrounded, moveSetting.ground);
     }
 
     void Start()
     {
         targetRot = transform.rotation;
         if (GetComponent<Rigidbody>())
             rBody = GetComponent<Rigidbody>();
         else
             Debug.LogError("Character Requires Rigidbody");
 
         forwardInput = turnInput = jumpInput = 0;
     }
     void GetInput()
     {
         forwardInput = Input.GetAxis(inputSetting.FORWARD_AXIS);
         turnInput = Input.GetAxis(inputSetting.TURN_AXIS);
         jumpInput = Input.GetAxisRaw(inputSetting.JUMP_AXIS);
     }
     void Update()
     {
         GetInput();
         Turn();
     }
     void FixedUpdate()
     {
         Run();
         Jump();
         rBody.velocity = transform.TransformDirection(velocity);
     }
     void Run()
     {
         if (Mathf.Abs(forwardInput) > inputSetting.inputDelay)
         {
             velocity.z = moveSetting.forwardVel * forwardInput;
         }
         else
             velocity.z = 0;
     }
     void Turn()
     {
         targetRot *= Quaternion.AngleAxis(moveSetting.rotateVel * turnInput * Time.deltaTime, Vector3.up);
         transform.rotation = targetRot;
     }
 
     int jumpCount = 2;
     CharacterController controller = new CharacterController();
 
     void Jump()
     {
 
         if (Input.GetKeyDown(KeyCode.Space) && jumpCount >= 1)
         {
             jumpCount--;
             velocity.y = moveSetting.jumpVel + jumpCount;
         }
         else if (Grounded())
         {
             jumpCount = 2;
             velocity.y = 0;
         }
         else
         {
             velocity.y -= physSetting.downAccel;
         }
     }
   
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                