void Update() { // Moving //PlayerMovement.MSV_Update(); // Shooting if (MSV_Input.GetActionPressed(MSV_Action.Fire1)) { Vector3 facing = PlayerMovement.GetFacing(); Vector3 spawnPos = transform.TransformPoint(Capsule.center + Capsule.height * 0.25f * Vector3.up) + facing * (Capsule.radius + 0.1f); Quaternion spawnDir = Quaternion.LookRotation(facing, Vector3.up); Instantiate <GameObject>(Projectile, spawnPos, spawnDir); } if (MSV_Input.GetActionPressed(MSV_Action.Fire2)) { } }
public void Move_Update() { var x = MSV_Input.GetAxis(MSV_Axis.Horizontal); var y = MSV_Input.GetAxis(MSV_Axis.Vertical); // if either direction is more than 0.1 if (x * x + y * y > 0.01f) { //Accelerate float dir = Mathf.Atan2(y, x) / DIR_SCALE; dir = Mathf.Floor(dir + 0.5f); dir *= DIR_SCALE; Vector3 accelDir = Mathf.Cos(dir) * Vector3.right + Mathf.Sin(dir) * Vector3.forward; float mag = Mathf.Sqrt(x * x + y * y); RB.AddForce(Acceleration * mag * accelDir, ForceMode.Acceleration); Facing = accelDir; } else { if (RB.velocity.sqrMagnitude > 0.1f) { // Decelerate Vector3 horizontalVel = RB.velocity; horizontalVel.y = 0.0f; horizontalVel.Normalize(); RB.AddForce(Deceleration * -horizontalVel, ForceMode.Acceleration); } } UpdateFloorDistance(); if (MSV_Input.GetActionPressed(MSV_Action.Jump) && IsOnGround) { RB.AddForce(JumpVelocity * Vector3.up, ForceMode.VelocityChange); } // Limit Max Velocity if (RB.velocity.x * RB.velocity.x + RB.velocity.z * RB.velocity.z > MaxVelocity * MaxVelocity) { var horizontalVel = new Vector2(RB.velocity.x, RB.velocity.z); horizontalVel = horizontalVel.normalized * MaxVelocity; RB.velocity = new Vector3(horizontalVel.x, RB.velocity.y, horizontalVel.y); // those two Ys are not a typo } }