Rotating a character with character controller when colliding a wall.
This is kind of hard to explain, but i want to code a walljump with a character controller and i want to do this in two steps. For example when i press the Jump button when near a wall, i want the character to have the Same orientation than the wall and then jump out.
Here's what i've done.
void OnControllerColliderHit(ControllerColliderHit hit)
{
if ((Input.GetButtonDown("Jump")) && (_controller.collisionFlags & CollisionFlags.CollidedSides) != 0 && !_grounded)
{
_hitNormal = hit.normal; //Normal of the hit
_wjtimer = 0.0f; //Timer the character is on the wall
_preWJ = true; //Boolean that is pre-walljumping
_walljump = Vector3.Reflect(_velocity, _hitNormal); //Direction the character will jump out after being for 0.5 seconds
_wjwallvector = _hitNormal;
_staticRotation.eulerAngles = _wjwallvector; //Rotation the character will be facing in the wall
_followcamera = false; //The character will stop following the camera
}
}
Basically _wjwallvector is the vector the character will be facing for 0.5 seconds before walljumping, which should be facing the wall that the character was facing when i pressed space.
_walljump is the Direction the character will be pushed out the wall after being in the wall for 0.5 seconds.
Basically my issue here is that i get both vectors WRONG, they always give odd results
For example the _wjwallvector is always facing the same direction no matter what wall i jump to. and the _walljump vector makes me jump to a odd place too, in short none of them work properly.
TL;DR: I want to get two vectors: _wjwallvector: Make the character face the wall i jumped to. _walljump: Make the character jump to the opposite angle i jumped to (Basically a reflected vector).
Is there any way i could get the right values of these two rotations? i would really appreciate it since i'm stuck in this issue and i don't find a way out
Answer by bburtson09 · Sep 18, 2015 at 11:22 PM
I am having a hard time following but, instead of using the walls position maybe... if our conditionals are satisfied we can consider using a vector3.addforce relative the players position and rotation.
The issue is that the Character controller has nothing such as .AddForce
Basically what i'm trying to explain is that I need two vectors, one that makes the character Face the wall is colliding when i pressed space (For example, if the wall is in my left and i press space while colliding the wall, the character will look left.
The other one is a reflected vector, which is pretty much what this arrow does in the picture.
http://i.stack.imgur.com/QGuay.png
The problem i have is that i don't know how to get these values.