- Home /
Character only goes up during wall jump,Wall jump only goes up
I've been following some tutorials on how to make a platformer and on how to wall jump, but I'm having no luck getting the character to do what I'd like him to do. Here is the code for the players movement. At the moment, all the player does is jump up higher on the vertical axis after pressing "Jump" against the wall. I'd like for him to travel back to the opposite wall, but I've been having no luck doing so...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player_Movement : MonoBehaviour
{
public float moveSpeed;
//public Rigidbody rB;
public float jumpForce;
public CharacterController controller;
private Vector3 lastMove;
private Vector3 moveDirection;
public float gravityScale;
public float verticalVelocity;
public Animator anim;
public Transform pivot;
public float rotateSpeed;
public GameObject playerModel;
public float knockBackForce;
public float knockBackTime;
private float knockBackCounter;
// Use this for initialization
void Start ()
{
//rB = GetComponent<Rigidbody>();
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update ()
{
//rB.velocity = new Vector3(Input.GetAxis("Horizontal") * moveSpeed, rB.velocity.y, Input.GetAxis("Vertical") * moveSpeed);
/*if(Input.GetButtonDown("Jump"))
{
rB.velocity = new Vector3(rB.velocity.x, jumpForce, rB.velocity.z);
}*/
//moveDirection = new Vector3(Input.GetAxis("Horizontal") * moveSpeed, moveDirection.y, Input.GetAxis("Vertical") * moveSpeed);
if (knockBackCounter <= 0)
{
float yStore = moveDirection.y;
moveDirection = (transform.forward * Input.GetAxis("Vertical")) + (transform.right * Input.GetAxis("Horizontal"));
moveDirection = moveDirection.normalized * moveSpeed;
moveDirection.y = yStore;
//controller.Move(moveDirection * Time.deltaTime);
lastMove = moveDirection;
if (controller.isGrounded)
{
moveDirection.y = 0f;
if (Input.GetButtonDown("Jump"))
{
moveDirection.y = jumpForce;
}
}
}
else
{
knockBackCounter -= Time.deltaTime;
}
moveDirection.y = moveDirection.y + (Physics.gravity.y * gravityScale * Time.deltaTime);
controller.Move(moveDirection * Time.deltaTime);
//Move player in different directions based on camera look direction
if(Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
{
transform.rotation = Quaternion.Euler(0f, pivot.rotation.eulerAngles.y, 0f);
Quaternion newRotation = Quaternion.LookRotation(new Vector3(moveDirection.x, 0f, moveDirection.z));
playerModel.transform.rotation = Quaternion.Slerp(playerModel.transform.rotation, newRotation, rotateSpeed * Time.deltaTime);
}
anim.SetBool("isGrounded", controller.isGrounded);
anim.SetFloat("Speed", (Mathf.Abs(Input.GetAxis("Vertical")) + Mathf.Abs(Input.GetAxis("Horizontal"))));
}
private void OnControllerColliderHit(ControllerColliderHit hit)
{
if(!controller.isGrounded && hit.normal.y < 0.1f)
{
if(Input.GetButtonDown("Jump"))
{
Debug.DrawRay(hit.point, hit.normal, Color.red, 1.25f);
moveDirection.y = jumpForce;
Vector3 hitDirection = hit.transform.position - transform.position;
hitDirection = hitDirection.normalized;
}
}
}
public void KnockBack(Vector3 direction)
{
knockBackCounter = knockBackTime;
moveDirection = direction * knockBackForce;
moveDirection.y = knockBackForce;
}
}
Answer by anthot4 · May 29, 2018 at 03:34 PM
Please re paste your code its very difficult to read.
Sorry about that. I'm new to this, so thanks for letting me know it was posted incorrectly. I've fixed it now.
Your answer
![](https://koobas.hobune.stream/wayback/20220612163634im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Wall jump doesn't change on x axis 1 Answer
Character controller stopping. 0 Answers
Problem with Wall Jump - 2D 0 Answers
Side Scrolling 3D Platformer? 0 Answers