2D Platformer Controller Help

Hey all, I’m trying to write my own 2D platformer controller. I found some code to start from that had a basic left and right movement with jumping. I added the info for double jumping, and now I am trying to make it so that the character will “stick” to a specific wall type, and slowly slide down it until you “jump off”. There should be no control over the character until you jump off the wall. I’m really struggling with this.

using UnityEngine;
using System.Collections;

public class PlatformerController : MonoBehaviour {

public float Gravity = 20f;
public float StickyGravity = 20f;
public float TerminalVelocity = 20f;
public float TerminalVelocitySet = 20f;
public float JumpSpeed = 6f;
public float DoubleJumpSpeed = 6f;
public float MoveSpeedSet = 10f;
public float MoveSpeed = 10f;
private float jumpCount = 0;

public Vector3 MoveVector {get; set;}
public float VerticalVelocity {get; set;}

public CharacterController CharacterController;

// Use this for initialization
void Awake () {
CharacterController = gameObject.GetComponent(“CharacterController”) as CharacterController;
}

// Update is called once per frame
void Update () {

checkMovement();
HandleActionInput();
processMovement();
}

void checkMovement(){
//move l/r
var deadZone = 0.1f;
VerticalVelocity = MoveVector.y;
MoveVector = Vector3.zero;
if(Input.GetAxis(“Horizontal”) > deadZone || Input.GetAxis(“Horizontal”) < -deadZone){
MoveVector += new Vector3(Input.GetAxis(“Horizontal”),0,0);
}
//jump

}

void HandleActionInput(){
if(CharacterController.isGrounded){
jumpCount = 0;
}
if(jumpCount < 1){
if(Input.GetButtonDown(“Jump”)){
jump();

}
}
else{
if(jumpCount == 1){
if(Input.GetButtonDown(“Jump”)){
jumpjump();
}
}
}
}

void processMovement(){
//transform moveVector into world-space relative to character rotation
MoveVector = transform.TransformDirection(MoveVector);

//normalize moveVector if magnitude > 1
if(MoveVector.magnitude > 1){
MoveVector = Vector3.Normalize(MoveVector);
}

//multiply moveVector by moveSpeed
MoveVector *= MoveSpeed;

//reapply vertical velocity to moveVector.y
MoveVector = new Vector3(MoveVector.x, VerticalVelocity, MoveVector.z);

//apply gravity
applyGravity();

//move character in world-space
CharacterController.Move(MoveVector * Time.deltaTime);

if(RaycastHit.stickywall){
wallstick ();
}
}

void applyGravity(){
if(MoveVector.y > -TerminalVelocity){
MoveVector = new Vector3(MoveVector.x, (MoveVector.y - Gravity * Time.deltaTime), MoveVector.z);
}
if(CharacterController.isGrounded MoveVector.y < -1){
MoveVector = new Vector3(MoveVector.x, (-1), MoveVector.z);
}
}

public void jump(){
if(CharacterController.isGrounded){
VerticalVelocity = JumpSpeed;
jumpCount++;
}
}
public void jumpjump(){
VerticalVelocity = DoubleJumpSpeed;
jumpCount++;
}
void wallstick(){
TerminalVelocity = 0;
MoveSpeed = 0;
if(Input.GetButtonDown(“Jump”)){
MoveVector += new Vector3(JumpSpeed, JumpSpeed/10, 0);
if(CharacterController.isGrounded){
MoveVector += new Vector3(MoveVector.x, MoveVector.y, MoveVector.z);
}
}
}
}

Can anyone help?

You do know that there is a unity answers for this? www.answers.unity3d.com

Thanks! I am brand new to Unity, and this is my first time on the forums. Sorry for posting this in an inappropriate area.