(I am using Unity 2021.3.5 (latest), I wrote a script in C# for player movement, Horizontal input (A, D) movement works just fine but vertical input (W, S) is not working can someone help me?enter image description here
Code:
CodePudding user response:
You assigned the same variable name moveDirection for both vertical and horizontal directions, do not do that. Instead, assign horizontal input and vertical input to two different variables, say moveDirectionX and moveDirectionY. Adding both of these vectors gives the result.
Vector3 moveDirectionX, moveDirectionY;
public void MovePlayer()
{
moveDirectionX = orientation.forward * verticalInput;
moveDirectionY = orientation.right * horizontalInput;
RB.AddForce((moveDirectionX moveDirectionY).normalized * moveSpeed * 10f, ForceMode.Force);
}
CodePudding user response:
In Unity window go to Edit -> Project Settings -> Input Manager -> Axes -> Vertical.
You can change your input buttons in Negative Button and Positive button field or you can add alternative input: Alt Negative Button and Alt Positive Button.
But as mentioned from above you won't be able to move in both directions simultaneously due to assigning direction to one variable.
