Skip to content

Instantly share code, notes, and snippets.

@mzandvliet
Last active November 26, 2019 11:32
Show Gist options
  • Save mzandvliet/af4351083cad1ec1df02a21a66506368 to your computer and use it in GitHub Desktop.
Save mzandvliet/af4351083cad1ec1df02a21a66506368 to your computer and use it in GitHub Desktop.
Test script for profiling moving of colliders with various configurations in Unity
using System.Collections.Generic;
using UnityEngine;
public class ColliderMovingCost : MonoBehaviour {
[SerializeField] private bool _useKinematicRigidbodies = true;
[SerializeField] private bool _moveCollidersUsingRigidbody = false;
private List<Transform> _colliderTransforms;
private List<Rigidbody> _colliderBodies;
const int ColliderCount = 1024 * 8;
void Start() {
_colliderTransforms = new List<Transform>();
_colliderBodies = new List<Rigidbody>();
for (int i = 0; i < ColliderCount; i++) {
var go = new GameObject("Collider_" + i);
var collider = go.AddComponent<BoxCollider>();
var xform = go.GetComponent<Transform>();
xform.position = Random.insideUnitSphere * 32f;
_colliderTransforms.Add(xform);
if (_useKinematicRigidbodies) {
var body = go.AddComponent<Rigidbody>();
body.isKinematic = true;
_colliderBodies.Add(body);
}
}
}
void Update() {
if (_moveCollidersUsingRigidbody) {
for (int i = 0; i < ColliderCount; i++) {
_colliderBodies[i].MovePosition(Random.insideUnitSphere);
}
} else {
for (int i = 0; i < ColliderCount; i++) {
_colliderTransforms[i].Translate(Random.insideUnitSphere, Space.World);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment