Quantcast
Channel: Questions in topic: "issue"
Viewing all articles
Browse latest Browse all 827

Unity lags in play mode but works well after building the game ? over 100 fps ?

$
0
0
the issue is the values arent the same in low and high frame rate and i have a problem with unity where i get 40 / 60 fps on play mode but if i build the game i get like 150 /200 ? and the movement values arent the same for example while wallruning i cant reach the other wall but on the play mode i can idk how to fix the issue or know why is it happening this is my fps controller may be in the code idk its messy tho im sorry : using System.Collections; using System.Collections.Generic; using UnityEngine; public class Movement : MonoBehaviour { public enum States { Walking, WallRunig, Grappling, verticalWallRuning, } States state; [Header("Controller Settings")] [SerializeField] CharacterController cc; [SerializeField] float Movement_Speed; [SerializeField] float walkSpeed = 15f; [SerializeField] float crouchSmoother = 8.5f; [SerializeField] float sprintSpeed = 23f; [SerializeField] float JumpForce = 15.0f; [SerializeField] float CrouchSpeed; bool crouching = false; [SerializeField] float WallJump = 5f; float originalHight; [SerializeField] float crouchHight; private Vector3 forward, right; private Vector3 moveDir = Vector3.zero; bool stopped = false; [Header("Gravity")] [SerializeField] float CurrentGravity = 13.0f; [SerializeField] float NormalGravityOnGround = 14f; [SerializeField] float wallJumpGravity = 18f; [SerializeField] float wallGravity = .5f; [SerializeField] float HookGravity = 19f; [SerializeField] [Range(.0f, .5f)] float moveSmoothTime = 0.3f; public Vector2 currentDir, currentDirVelocity; float velovityY = 0.0f; [Header("WallRun")] [SerializeField] private float wallSpeed; [SerializeField] LayerMask Wall; [SerializeField] float SideWallforce; private Vector3 WallDir; private bool Right, left; [SerializeField] float Limit; private float YonWall; [SerializeField] float MaxWallDistance; float LWallDistance, RwallDistance; RaycastHit Lhit; RaycastHit hit; [Header("Camera")] [SerializeField] Camera cam; [SerializeField] private float fov; [SerializeField] private float wallrunFov; [SerializeField] private float wallrunfovTime; [SerializeField] private float camTilt; [SerializeField] private float camTiltTime; [SerializeField] private float GrappleFov; [SerializeField] private float GrappleFovTime; public float tilt { get; private set; } [Header("Grabble")] [SerializeField] float GrappleRange; [SerializeField] float GrappleSpeed; private Vector3 hookPosition; [SerializeField] float GrappleJump = 1000f; [SerializeField] LayerMask Grapple; LineRenderer lr; [Header("vertical Wallrun settings")] [SerializeField] private float VerticalgravityForce = 5f; Vector3 verticalWallRunDirection = Vector3.zero; public LayerMask verticalWRLayer; [SerializeField] float maxcastdistance; bool JumpedFromWall = false; [SerializeField] float verticalWallSPeed = 10f; [SerializeField] float CLimbingJump = 750f; [SerializeField] float verticalWallFov = 4f; RaycastHit vhit; private void Awake() { lr = GetComponent(); } void Start() { originalHight = cc.height; state = States.Walking; } private void LateUpdate() { if (state == States.Grappling) { DrawRope(); } } private void Update() { if (state == States.Walking) { movementInput(); normalMovement(); Crouch(); sprint(); resetfov(); lr.positionCount = 0; } else if (state == States.WallRunig) { wallruning(); } else if (state == States.Grappling) { GrappleOnAir(); } else if (state == States.verticalWallRuning) { VerticalWallrun(); } RwallDistance = Vector3.Distance(transform.position, hit.point); LWallDistance = Vector3.Distance(transform.position, Lhit.point); float vWallDistance = Vector3.Distance(transform.position, vhit.point); if (stopped && cc.isGrounded) { stopped = false; } else if (stopped && LWallDistance >= MaxWallDistance && RwallDistance >= MaxWallDistance) { stopped = false; } if (JumpedFromWall && cc.isGrounded) { JumpedFromWall = false; } else if (JumpedFromWall && vWallDistance >= MaxWallDistance) { JumpedFromWall = false; } checkWall(); GrappleCheck(); //checking for vertical climbing; if (Physics.Raycast(cam.transform.position, cam.transform.forward, out vhit, maxcastdistance, verticalWRLayer) && !JumpedFromWall && !cc.isGrounded) { state = States.verticalWallRuning; } } void movementInput() { Vector2 Targetdir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); Targetdir.Normalize(); currentDir = Vector2.SmoothDamp(currentDir, Targetdir, ref currentDirVelocity, moveSmoothTime); if (cc.isGrounded) { velovityY -= CurrentGravity * Time.deltaTime; CurrentGravity = NormalGravityOnGround; } if (!cc.isGrounded) { velovityY -= CurrentGravity * Time.deltaTime; } if (Input.GetButtonDown("Jump") && cc.isGrounded) velovityY =transform.up.y * JumpForce ; cc.Move(moveDir * Time.deltaTime); } void normalMovement() { forward = cam.transform.forward.normalized; right = transform.right.normalized; moveDir = (forward * currentDir.y + right * currentDir.x) * Movement_Speed; moveDir.y = Vector3.up.y* velovityY; } void Crouch() { if (Input.GetKey(KeyCode.C)) { crouching = true; } else crouching = false; if (crouching) { cc.height = Mathf.Lerp(cc.height, crouchHight, Time.deltaTime * crouchSmoother); Movement_Speed = CrouchSpeed; } else if (!crouching) { cc.height = Mathf.Lerp(cc.height, originalHight, Time.deltaTime * crouchSmoother * 2); Movement_Speed = walkSpeed; } } void sprint() { if (Input.GetKey(KeyCode.LeftShift)) { Movement_Speed = sprintSpeed; } else if (Input.GetKeyUp(KeyCode.LeftShift)) { Movement_Speed = walkSpeed; } } void checkWall() { if (Physics.Raycast(transform.position, transform.right * SideWallforce, out hit, Limit, Wall) && !cc.isGrounded && !stopped) { Right = true; left = false; WallDir.y = YonWall; YonWall = wallGravity * Time.deltaTime; state = States.WallRunig; } else if (Physics.Raycast(transform.position, -transform.right * SideWallforce, out Lhit, Limit, Wall) && !cc.isGrounded && !stopped) { left = true; Right = false; WallDir.y = wallGravity * Time.deltaTime; state = States.WallRunig; } else { Right = false; left = false; state = States.Walking; } } void startwallrun() { cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, wallrunFov, wallrunfovTime * Time.deltaTime); if (Right == true) { WallDir = (forward * wallSpeed + right * SideWallforce); tilt = Mathf.Lerp(tilt, camTilt, camTiltTime * Time.deltaTime); } else if (left == true) { WallDir = (forward * wallSpeed + -right * SideWallforce); tilt = Mathf.Lerp(tilt, -camTilt, camTiltTime * Time.deltaTime); } cc.Move(WallDir * Time.deltaTime); } void stopWallrun() { state = States.Walking; Right = false; left = false; stopped = true; } void wallruning() { startwallrun(); if (Input.GetButtonDown("Jump")) { stopWallrun(); velovityY = transform.up.y * WallJump * Time.deltaTime; moveDir.y = Vector3.up.y * velovityY; CurrentGravity = wallJumpGravity; } else if (!Right && !left) { stopWallrun(); } } void resetfov() { cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, fov, wallrunfovTime * Time.deltaTime); tilt = Mathf.Lerp(tilt, 0, camTiltTime * Time.deltaTime); } void GrappleCheck() { if (Physics.Raycast(cam.transform.position, cam.transform.forward, out RaycastHit hit, GrappleRange, Grapple) && Input.GetKey(KeyCode.E)) { hookPosition = hit.point; state = States.Grappling; } } void GrappleOnAir() { cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, GrappleFov, GrappleFovTime * Time.deltaTime); velovityY = -1f * Time.deltaTime; Vector3 GrappleDirection = (hookPosition - transform.position).normalized; cc.Move(GrappleDirection * GrappleSpeed * Time.deltaTime); if (Input.GetKeyUp(KeyCode.E)) { velovityY = transform.up.y * GrappleJump * Time.deltaTime; CurrentGravity = HookGravity; moveDir -= hit.normal * GrappleJump; } if (Vector3.Distance(transform.position, hit.point) >= 10f) { velovityY = transform.up.y * GrappleJump * Time.deltaTime; moveDir -= hit.normal * GrappleJump; state = States.Walking; } } void DrawRope() { lr.enabled = true; lr.positionCount = 2; lr.SetPosition(0, transform.position); lr.SetPosition(1, hookPosition); } void VerticalWallrun() { StartverticalWallrun(); velovityY = 1 * Time.deltaTime; } void StartverticalWallrun() { cam.fieldOfView = Mathf.Lerp(cam.fieldOfView,verticalWallFov, GrappleFovTime * Time.deltaTime); verticalWallRunDirection = (forward * VerticalgravityForce + transform.up * verticalWallSPeed) * Time.deltaTime; cc.Move(verticalWallRunDirection * Time.deltaTime); if (Input.GetButtonDown("Jump")) { stopverticalWallrun(); velovityY = transform.up.y * CLimbingJump * Time.deltaTime; moveDir.y = Vector3.up.y * velovityY; } } void stopverticalWallrun() { JumpedFromWall = true; velovityY = velovityY -= CurrentGravity * Time.deltaTime; state = States.Walking; } private void OnTriggerEnter(Collider other) { if (other.CompareTag("Finish") && state == States.verticalWallRuning) { stopverticalWallrun(); velovityY = transform.up.y * CLimbingJump * Time.deltaTime; moveDir.y = Vector3.up.y * velovityY; } } }

Viewing all articles
Browse latest Browse all 827

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>