- Home /
Question by
Hawkeye91803 · Apr 28, 2021 at 03:26 PM ·
scripting problemgameobjectobjectsfloatingpoint
Floating point origin script help
I am testing out with space physics and floating point origins, so I am using this script that I found:
// FloatingOrigin.cs
// Written by Peter Stirling
// 11 November 2010
// Uploaded to Unify Community Wiki on 11 November 2010
// Updated to Unity 5.x particle system by Tony Lovell 14 January, 2016
// fix to ensure ALL particles get moved by Tony Lovell 8 September, 2016
// URL: http://wiki.unity3d.com/index.php/Floating_Origin
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Camera))]
public class FloatingPointOrigin : MonoBehaviour
{
public float threshold = 100.0f;
public float physicsThreshold = 0f; // Set to zero to disable
public float defaultSleepThreshold = 0.14f;
ParticleSystem.Particle[] parts = null;
void LateUpdate()
{
Vector3 cameraPosition = gameObject.transform.position;
cameraPosition.y = 0f;
if (cameraPosition.magnitude > threshold)
{
Object[] objects = FindObjectsOfType(typeof(Transform));
foreach (Object o in objects)
{
Transform t = (Transform)o;
if (t.parent == null)
{
t.position -= cameraPosition;
}
}
// new particles... very similar to old version above
objects = FindObjectsOfType(typeof(ParticleSystem));
foreach (UnityEngine.Object o in objects)
{
ParticleSystem sys = (ParticleSystem)o;
if (sys.simulationSpace != ParticleSystemSimulationSpace.World)
continue;
int particlesNeeded = sys.maxParticles;
if (particlesNeeded <= 0)
continue;
bool wasPaused = sys.isPaused;
bool wasPlaying = sys.isPlaying;
if (!wasPaused)
sys.Pause();
// ensure a sufficiently large array in which to store the particles
if (parts == null || parts.Length < particlesNeeded)
{
parts = new ParticleSystem.Particle[particlesNeeded];
}
// now get the particles
int num = sys.GetParticles(parts);
for (int i = 0; i < num; i++)
{
parts[i].position -= cameraPosition;
}
sys.SetParticles(parts, num);
if (wasPlaying)
sys.Play();
}
}
}
}
It works very well, but the only problem is that the script will move every single object, but there are certain objects that I do not want the game to move. How would I go about omitting objects from being affected by this script?
Thank you, I am still learning.
Comment
Your answer
Follow this Question
Related Questions
How can I get the Transform from an Object (target of UnityEvent)? 1 Answer
Cannot destroy Component while GameObject is being activated or deactivated 2 Answers
How to create gameObjects in editor mode 1 Answer
Changing alpha value of a canvas from a different game object 1 Answer
GameObjects glitching through other Objects when being held 0 Answers