public void TurnIntoPlayerMadeObject(GameObject go, Color color, float liveTime) { if (liveTime > 0) { FadeAndDestroy fad = go.AddComponent <FadeAndDestroy>(); fad.delayTime = liveTime; // fad.explosion = playerObjectExplosion; } NVRInteractableItem interactableItem = go.GetComponent <NVRInteractableItem>(); if (!interactableItem) { interactableItem = go.GetComponentInChildren <NVRInteractableItem>(); } if (!interactableItem) { go.AddComponent <NVRInteractableItem>(); } MeshRenderer renderer = go.GetComponent <MeshRenderer>(); if (!renderer) { renderer = go.GetComponentInChildren <MeshRenderer>(); } if (renderer) { renderer.material.color = color; } Rigidbody rb = go.GetComponent <Rigidbody> (); if (!rb) { Rigidbody r = go.GetComponentInChildren <Rigidbody> (); if (r.gameObject.GetComponent <NVRInteractable> ()) { r.isKinematic = true; } } else { rb.isKinematic = true; } go.transform.position = getPlayerSpawnObjectPosition(); go.tag = "PlayerCreated"; }
IEnumerator StunRoutine(Interactor interactor) { ElephantMovement movement = interactor.GetComponent <ElephantMovement>(); if (movement) { movement.Punch(); } if (OnStun != null) { OnStun(new StunEventData(interactor.gameObject, gameObject)); } var stateEnemy = GetComponent <StatePatternEnemy>(); var navMeshAgent = GetComponent <NavMeshAgent>(); stateEnemy.StopMovement(); stateEnemy.enabled = false; navMeshAgent.enabled = false; interactor.GetComponent <AudioSource>().PlayOneShot(stunEnemyHitSound); if (stunIndicatorDestroyComp == null) { // Spawn stun indicator GameObject go = Instantiate <GameObject>(stunIndicatorPrefab); go.transform.parent = transform; go.transform.localPosition = stunIndicatorOffset; stunIndicatorDestroyComp = go.GetComponent <FadeAndDestroy>(); stunIndicatorDestroyComp.FadeInOutAndDestroy(0.15f, m_stunDuration.timeInSeconds - 0.5f, 0.35f); } else { stunIndicatorDestroyComp.ResetDuration(); } while (!m_stunDuration.IsOver()) { m_stunDuration.Update(Time.deltaTime); yield return(null); } m_stunDuration.Start(); stateEnemy.enabled = true; navMeshAgent.enabled = true; m_stunRoutine = null; stunIndicatorDestroyComp = null; }
void OnJointBreak(float breakForce) { ParticleSystem ps = GetComponent <ParticleSystem> (); if (ps) { ps.enableEmission = true; } GameObject pin = fixedJoint.connectedBody.gameObject; FadeAndDestroy pinFade = pin.AddComponent <FadeAndDestroy> (); pinFade.delayTime = 1f; pinFade.rate = 0.25f + Random.value * 0.1f; DestroyByTime explode = gameObject.AddComponent <DestroyByTime> (); explode.lifetime = fuseTime; explode.explosion = explosion; explode.toDestroy = transform.parent.gameObject; }
private static GameObject generateVoronoiPiece(GameObject source, List <Vector2> region, Vector2 origVelocity, Vector3 origScale, Quaternion origRotation, Material mat, Transform parentTransform) { //Create Game Object and set transform settings properly GameObject piece = new GameObject(source.name + " piece"); piece.transform.position = source.transform.position; piece.transform.rotation = source.transform.rotation; piece.transform.localScale = source.transform.localScale; //Create and Add Mesh Components MeshFilter meshFilter = (MeshFilter)piece.AddComponent(typeof(MeshFilter)); piece.AddComponent(typeof(MeshRenderer)); Mesh uMesh = piece.GetComponent <MeshFilter>().sharedMesh; if (uMesh == null) { meshFilter.mesh = new Mesh(); uMesh = meshFilter.sharedMesh; } Voronoi voronoi = new Voronoi(region, null, getRect(region)); Vector3[] vertices = calcVerts(voronoi); int[] triangles = calcTriangles(voronoi); uMesh.vertices = vertices; uMesh.triangles = triangles; if (source.GetComponent <SpriteRenderer>() != null) { uMesh.uv = calcUV(vertices, source.GetComponent <SpriteRenderer>(), source.transform); } else { uMesh.uv = calcUV(vertices, source.GetComponent <MeshRenderer>(), source.transform); } //set transform properties before fixing the pivot for easier rotation piece.transform.localScale = origScale; piece.transform.localRotation = origRotation; Vector3 diff = calcPivotCenterDiff(piece); centerMeshPivot(piece, diff); uMesh.RecalculateBounds(); uMesh.RecalculateNormals(); //setFragmentMaterial(piece, source); piece.GetComponent <MeshRenderer>().material = mat; //assign mesh meshFilter.mesh = uMesh; //Create and Add Polygon Collider PolygonCollider2D collider = piece.AddComponent <PolygonCollider2D>(); collider.SetPath(0, calcPolyColliderPoints(region, diff)); //Create and Add Rigidbody Rigidbody2D rigidbody = piece.AddComponent <Rigidbody2D>(); /* * This part has been modified from the original code. * It would be a good idea to look into how to copy a component at runtime. * Maybe this? https://answers.unity.com/questions/458207/copy-a-component-at-runtime.html */ rigidbody.sharedMaterial = physicsMaterial; rigidbody.velocity = origVelocity; rigidbody.simulated = true; rigidbody.bodyType = RigidbodyType2D.Dynamic; rigidbody.angularDrag = 0; rigidbody.gravityScale = 0; rigidbody.sleepMode = RigidbodySleepMode2D.StartAwake; FadeAndDestroy fadeAndDestroy = piece.AddComponent <FadeAndDestroy>(); piece.transform.parent = parentTransform; return(piece); }