Game breaks after instantiating particle system
After I instantiate particle system my game starts to lag,duplicate objects,camera stops rotating on X axis,every time I press space it plays sound,teleports me and console is filled with messages like "There are 64 audio listeners" Here is the code:
using Photon.Pun; using Photon.Realtime; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Hashtable = ExitGames.Client.Photon.Hashtable; public class PlayerController : MonoBehaviourPunCallbacks, IDamagable { [SerializeField] GameObject CameraHolder; [SerializeField] GameObject ui; [SerializeField] Image healthBarImage; ParticleSystem particle; public Transform jumpPos; PlayerManager playerManager; AudioSource audioSource; [SerializeField] float mouseSensitivity, sprintSpeed, walkSpeed, jumpForce, smoothTime; [SerializeField] Item[] items; Rigidbody rb; int itemIndex; int previousitemIndex = -1; const float maxHealth = 100; float currentHealth = maxHealth; PhotonView Pv; float VerticalLookRotation; bool Grounded; Vector3 smoothMoveVelocity; Vector3 moveAmount; void Awake() { audioSource = GetComponent<AudioSource>(); Cursor.lockState = CursorLockMode.Locked; rb = GetComponent<Rigidbody>(); Pv = GetComponent<PhotonView>(); playerManager = PhotonView.Find((int)Pv.InstantiationData[0]).GetComponent<PlayerManager>(); particle = GetComponent<ParticleSystem>(); } void Start() { if(Pv.IsMine) { EquipItem(0); } else { Destroy(GetComponentInChildren<Camera>().gameObject); Destroy(rb); Destroy(ui); } } void Update() { if (!Pv.IsMine) return; Look(); jump(); if(transform.position.y <= -150) { playerManager.Die(); } for (int i = 0; i < items.Length; i++) { if(Input.GetKeyDown((i +1).ToString())) { EquipItem(i); break; } } if(Input.GetMouseButtonDown(0)) { items[itemIndex].Use(); } if(Input.GetKey(KeyCode.LeftControl)) { walkSpeed = 2.5f; sprintSpeed = 2.5f; jumpForce = 100; transform.localScale = new Vector3(transform.localScale.x, 0.6f, transform.localScale.z); } if (Input.GetKeyUp(KeyCode.LeftControl)) { transform.localScale = new Vector3(transform.localScale.x, 1.262167f, transform.localScale.z); walkSpeed = 5; sprintSpeed = 9.55f; jumpForce = 500; } } void Look() { transform.Rotate(Vector3.up * Input.GetAxisRaw("Mouse X") * mouseSensitivity); VerticalLookRotation += Input.GetAxisRaw("Mouse Y") * mouseSensitivity; VerticalLookRotation = Mathf.Clamp(VerticalLookRotation, -90f, 90f); CameraHolder.transform.localEulerAngles = Vector3.left * VerticalLookRotation; } public void SetGroundedState(bool _Grounded) { Grounded = _Grounded; } void Move() { Vector3 moveDir = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized; moveAmount = Vector3.SmoothDamp(moveAmount, moveDir * (Input.GetKey(KeyCode.LeftShift) ? sprintSpeed : walkSpeed), ref smoothMoveVelocity, smoothTime); } void jump() { if (Input.GetKeyDown(KeyCode.Space) && Grounded) { ParticleSystem particleINS = Instantiate(particle, jumpPos); rb.AddForce(transform.up * jumpForce); } } void EquipItem(int _index) { if (_index == previousitemIndex) return; itemIndex = _index; items[itemIndex].itemGameObject.SetActive(true); if(previousitemIndex != -1) { items[previousitemIndex].itemGameObject.SetActive(false); } previousitemIndex = itemIndex; if(Pv.IsMine) { Hashtable hash = new Hashtable(); hash.Add("itemIndex", itemIndex); PhotonNetwork.LocalPlayer.SetCustomProperties(hash); } } public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) { if(!Pv.IsMine && targetPlayer == Pv.Owner) { EquipItem((int)changedProps["itemIndex"]); } } private void FixedUpdate() { if (!Pv.IsMine) return; Move(); rb.MovePosition(rb.position + transform.TransformDirection(moveAmount) * Time.fixedDeltaTime); } public void TakeDamage(float damage) { Pv.RPC("RPC_TakeDamage", RpcTarget.All, damage); audioSource.Play(); } [PunRPC] void RPC_TakeDamage(float damage) { if (!Pv.IsMine) return; Debug.Log("took damage" + damage); currentHealth -= damage; healthBarImage.fillAmount = currentHealth / maxHealth; if(currentHealth <= 0 ) { Die(); } } void Die() { playerManager.Die(); } private void OnCollisionEnter(Collision collision) { if(collision.gameObject.tag == "Bouncepad") { rb.AddForce(transform.up * 1100); } } }
Answer by salamlex147 · Jan 09 at 02:15 PM
For some reason code here doesnt have spaces but heres whats causing the problem ParticleSystem particleINS = Instantiate(particle, jumpPos);
Your answer
