//private IEnumerator DelayDestory(float time) //{ // yield return new WaitForSeconds(time); // if (ExploseObject != null) // { // ExploseObject.SetActive(true); // var particles = ExploseObject.GetComponentsInChildren<ParticleSystem>(); // foreach (var particle in particles) // particle.Play(); // RigidBody.velocity = Vector3.zero; // yield return new WaitForSeconds(0.5f); // } // Destroy(gameObject); //} //void OnTriggerEnter(Collider other) //{ // Debug.LogError("trigger " + other.gameObject.tag + "; " + other.gameObject.name); // if (other.gameObject.tag == "Player") // { // var controller = other.gameObject.GetComponent<PlayerController>(); // if (_gameManager.PlayerModel.Dead) // return; // //StopAllCoroutines(); // _gameManager.PlayerModel.Damage(Damage); // //RigidBody.velocity = Vector3.zero; // //StartCoroutine(DelayDestory(0.2f)); // } //} //public void Go(GameManager gameManager, float lifeTime, float speed, float delayMove, Vector3 position) //{ // _gameManager = gameManager; // _lifeTime = lifeTime; // _speed = speed; // _delayMove = delayMove; // _startPosition = position; // transform.position = _startPosition; // gameObject.SetActive(true); // StartCoroutine(StartMove()); //} //private IEnumerator StartMove() //{ // yield return new WaitForSeconds(_delayMove); // RigidBody.AddForce(transform.forward * _speed * 10); // StartCoroutine(DelayDestory(_lifeTime)); //} private void ChangeColor() { RFX4_ColorHelper.ChangeObjectColorByHUE(gameObject, ColorHUE / 360f); var transformMotion = gameObject.GetComponentInChildren <RFX4_TransformMotion>(true); if (transformMotion != null) { transformMotion.HUE = ColorHUE / 360f; foreach (var collidedInstance in transformMotion.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, ColorHUE / 360f); } } } var rayCastCollision = gameObject.GetComponentInChildren <RFX4_RaycastCollision>(true); if (rayCastCollision != null) { rayCastCollision.HUE = ColorHUE / 360f; foreach (var collidedInstance in rayCastCollision.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, ColorHUE / 360f); } } } }
private void Update() { if (mat == null) { return; } var time = Time.time - startTime; if (canUpdate) { var eval = Color.Evaluate(time / TimeMultiplier); if (HUE > -0.9f) { eval = RFX4_ColorHelper.ConvertRGBColorByHUE(eval, HUE); startColor = RFX4_ColorHelper.ConvertRGBColorByHUE(startColor, HUE); } mat.SetColor(propertyID, eval * startColor); } if (time >= TimeMultiplier) { if (IsLoop) { startTime = Time.time; } else { canUpdate = false; } } }
private void Update() { rend.GetPropertyBlock(props); var time = Time.time - startTime; if (canUpdate) { var eval = Color.Evaluate(time / TimeMultiplier); if (HUE > -0.9f) { eval = RFX4_ColorHelper.ConvertRGBColorByHUE(eval, HUE); startColor = RFX4_ColorHelper.ConvertRGBColorByHUE(startColor, HUE); } props.SetColor(propertyID, eval * startColor); } if (time >= TimeMultiplier) { if (IsLoop) { startTime = Time.time; } else { canUpdate = false; } } rend.SetPropertyBlock(props); }
void OnCollisionBehaviour(RaycastHit hit) { print("hit"); var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { Hit = hit }); } CollidedInstances.Clear(); foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } }
void OnCollisionBehaviour(RaycastHit hit) { var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { Hit = hit }); } CollidedInstances.Clear(); if (hit.rigidbody && hit.rigidbody.gameObject.tag == "Enemy") { _spell.OnHit(trigger, t.forward, t.position, hit.rigidbody.gameObject.GetComponent <Enemy>()); } foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } }
void RemoveRigidbody() { isCollided = false; if (rigid != null) { Destroy(rigid); } if (collid != null) { Destroy(collid); } if (EffectOnCollision != null && !Spawn) { var instance = Instantiate(EffectOnCollision, transform.position, new Quaternion()) as GameObject; if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (LookAtNormal) { instance.transform.LookAt(transform.position + transform.forward); } else { instance.transform.rotation = transform.rotation; } // if (!CollisionEffectInWorldSpace) instance.transform.parent = contact.otherCollider.transform.parent; Spawn = true; Destroy(instance, CollisionEffectDestroyAfter); } }
void OnCollisionBehaviour(RaycastHit hit) { var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { Hit = hit }); } if (hit.transform.GetComponent <GoblinController>() != null) { hit.transform.GetComponent <GoblinController>().TakeDamage(10); if (transform.parent.name == "Effect1_Optimized(Clone)") { hit.transform.GetComponent <GoblinController>().SpeedDown(); } } if (hit.transform.GetComponent <WatcherController>() != null) { hit.transform.GetComponent <WatcherController>().TakeDamage(10); } if (hit.transform.GetComponent <StateController>() != null) { hit.transform.GetComponent <StateController>().TakeDamage(10); if (transform.parent.name == "Effect1_Optimized(Clone)") { hit.transform.GetComponent <BossController>().SpeedDown(); } } if (hit.transform.GetComponent <KinghtController>() != null) { hit.transform.GetComponent <KinghtController>().TakeDamage(10); if (transform.parent.name == "Effect1_Optimized(Clone)") { hit.transform.GetComponent <KinghtController>().SpeedDown(); } } CollidedInstances.Clear(); foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } }
private void ComputeRaycast() { RaycastHit raycastHit; if (Physics.Linecast(transform.position + new Vector3(0, 1, 0), _target, out raycastHit, _collidesWith)) { Vector3 position; if (UsePivotPosition) { position = raycastHit.transform.position; } else { position = raycastHit.point + raycastHit.normal * Offset; } if (CollidedInstances.Count == 0) { foreach (var effect in Effects) { var instance = Instantiate(effect, position, new Quaternion()); CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (!IsWorldSpace) { instance.transform.parent = transform; } if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } Destroy(instance, DestroyTime); Destroy(gameObject.transform.parent.gameObject, DestroyTime); } } else { foreach (var instance in CollidedInstances) { if (instance == null) { continue; } instance.transform.position = position; if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } } } } }
private void UpdateRaycast() { RaycastHit raycastHit; if (Physics.Raycast(transform.position, transform.forward, out raycastHit, RaycastDistance)) { Vector3 position; position = UsePivotPosition ? raycastHit.transform.position : raycastHit.point + raycastHit.normal * Offset; if (CollidedInstances.Count == 0) { for (int i = 0; i < Effects.Length; ++i) { var instance = Instantiate(Effects[i], position, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (!IsWorldSpace) { instance.transform.parent = transform; } if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } if (DestroyTime > 0.0001f) { Destroy(instance, DestroyTime); } } } else { for (int i = 0; i < CollidedInstances.Count; ++i) { if (CollidedInstances[i] == null) { continue; } CollidedInstances[i].transform.position = position; if (UseNormalRotation) { CollidedInstances[i].transform.LookAt(raycastHit.point + raycastHit.normal); } } } } if (RealTimeUpdateRaycast) { canUpdate = true; } }
public void ChangeParticleColor() { Debug.Log("ColorChanged"); var hue = RFX4_ColorHelper.ColorToHSV(EffectColor).H; RFX4_ColorHelper.ChangeObjectColorByHUE(gameObject, hue); var physxMotion = GetComponentInChildren<RFX4_PhysicsMotion>(); if (physxMotion != null) physxMotion.HUE = hue; var rayCastCollision = GetComponentInChildren<RFX4_RaycastCollision>(); if (rayCastCollision != null) rayCastCollision.HUE = hue; }
void OnCollisionBehaviour(RaycastHit hit) { var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { Hit = hit }); } CollidedInstances.Clear(); foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } var col = hit.collider.gameObject; var Rigi = col.GetComponent <Rigidbody>(); if (Rigi) { Rigi.AddForceAtPosition(hit.normal * -2000f * Rigi.mass, hit.point); } if (col.transform.parent && col.transform.parent.gameObject.GetComponent <Ninja>()) { Ninja n = col.transform.parent.gameObject.GetComponent <Ninja>(); n.hits += 30; n.gameObject.GetComponent <Rigidbody>().AddForceAtPosition(hit.normal * -1000f, hit.point); if (hit.collider.name.Equals(n.weakSpotName)) { n.hits += n.weakSpotDamage; col.GetComponent <Breakable_Object>().Explode(col.transform.position, 300f, 0f); } } }
private void UpdateColor() { var transformMotion = GetComponentInChildren <RFX4_TransformMotion>(true); var rayCastCollision = GetComponentInChildren <RFX4_RaycastCollision>(true); var hue = RFX4_ColorHelper.ColorToHSV(Color).H; RFX4_ColorHelper.ChangeObjectColorByHUE(gameObject, hue); if (transformMotion != null) { transformMotion.HUE = hue; } if (rayCastCollision != null) { rayCastCollision.HUE = hue; } previousColor = Color; }
private void InitFireBall() { fireBall = Instantiate(Resources.Load("Prefabs/Effects/FireBall"), skillSpellingPoint.position, Quaternion.Euler(0, !PlayerTestController.instance.facingRight?-90:90, 0)) as GameObject; var tm = fireBall.GetComponentInChildren <RFX4_TransformMotion>(true); if (tm != null) { tm.CollisionEnter += Tm_CollisionEnter_FireBall; } // define color float colorHUE = 6f; // red fire color RFX4_ColorHelper.ChangeObjectColorByHUE(fireBall, colorHUE / 360f); var transformMotion = fireBall.GetComponentInChildren <RFX4_TransformMotion>(true); if (transformMotion != null) { transformMotion.HUE = colorHUE / 360f; foreach (var collidedInstance in transformMotion.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, colorHUE / 360f); } } } var rayCastCollision = fireBall.GetComponentInChildren <RFX4_RaycastCollision>(true); if (rayCastCollision != null) { rayCastCollision.HUE = colorHUE / 360f; foreach (var collidedInstance in rayCastCollision.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, colorHUE / 360f); } } } }
void OnCollisionBehaviour(RaycastHit hit) { var explosionPoint = hit.point; var colliders = Physics.OverlapSphere(explosionPoint, _explosionRadius); foreach (Collider hitCollider in colliders) { print(hitCollider.name); var rb = hitCollider.GetComponent <Rigidbody> (); if (rb != null) { print("FireBall Hit :" + rb.name); rb.AddExplosionForce(_explosionPower, explosionPoint, _explosionRadius, _upwardMod); } } var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { Hit = hit }); } CollidedInstances.Clear(); foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } }
private void OnCollisionBehaviour(RaycastHit hit) { CollidedInstances.Clear(); foreach (var effect in EffectsOnCollision) { var instance = Instantiate(effect, hit.point + hit.normal * CollisionOffset, new Quaternion()); CollidedInstances.Add(instance); if (Hue > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, Hue); } instance.transform.LookAt(hit.point + hit.normal + hit.normal * CollisionOffset); if (!CollisionEffectInWorldSpace) { instance.transform.parent = transform; } Destroy(instance, DestroyTimeDelay); } Destroy(transform.parent.gameObject, DestroyTimeDelay); }
void OnCollisionEnter(Collision collision) { print(collision.gameObject.name); SpiritSystem spiritSystem = FindObjectOfType <SpiritSystem>(); if (spiritSystem != null) { if (spiritSystem.spiritEquipped.spiritClass == BaseSpirit.SpiritClass.Mage) { if (collision.gameObject.GetComponent <Enemy>()) { collision.gameObject.GetComponent <Enemy>().TakeDamage(spiritSystem.spiritEquipped.DamageModifier); } spiritSystem.MageDamage(collision.transform.position); } else if (spiritSystem.spiritEquipped.spiritClass == BaseSpirit.SpiritClass.Ranger) { if (collision.gameObject.GetComponent <Enemy>()) { spiritSystem.RangerDamage(collision.gameObject.GetComponent <Enemy>()); } } } if (isCollided && !effectSettings.UseCollisionDetection) { return; } foreach (ContactPoint contact in collision.contacts) { if (!isCollided) { isCollided = true; //offsetColliderPoint = contact.otherCollider.transform.position - contact.point; // lastCollider = contact.otherCollider; // lastContactPoint = contact; if (UseTargetPositionAfterCollision) { if (targetAnchor != null) { Destroy(targetAnchor); } targetAnchor = new GameObject(); targetAnchor.hideFlags = HideFlags.HideAndDontSave; targetAnchor.transform.parent = contact.otherCollider.transform; targetAnchor.transform.position = contact.point; targetAnchor.transform.rotation = transform.rotation; //targetAnchor.transform.LookAt(contact.normal); } } var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { HitPoint = contact.point, HitCollider = contact.otherCollider, HitGameObject = contact.otherCollider.gameObject }); } if (EffectOnCollision != null) { var instance = Instantiate(EffectOnCollision, contact.point, new Quaternion()) as GameObject; if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (LookAtNormal) { instance.transform.LookAt(contact.point + contact.normal); } else { instance.transform.rotation = transform.rotation; } if (!CollisionEffectInWorldSpace) { instance.transform.parent = contact.otherCollider.transform.parent; } Destroy(instance, CollisionEffectDestroyAfter); } } foreach (var obj in DeactivateObjectsAfterCollision) { if (obj != null) { var ps = obj.GetComponent <ParticleSystem>(); if (ps != null) { ps.Stop(); } else { obj.SetActive(false); } } } if (rigid != null) { Destroy(rigid); } if (collid != null) { Destroy(collid); } }
private void UpdateRaycast() { RaycastHit raycastHit; if (Physics.Raycast(transform.position, transform.forward, out raycastHit, RaycastDistance)) { Vector3 position; if (UsePivotPosition) { position = raycastHit.transform.position; } else { position = raycastHit.point + raycastHit.normal * Offset; } var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_PhysicsMotion.RFX4_CollisionInfo { HitPoint = raycastHit.point, HitCollider = raycastHit.collider, HitGameObject = raycastHit.transform.gameObject }); } if (distanceParticles != null) { foreach (var rayPS in distanceParticles) { if (rayPS != null && rayPS.name.Contains(particlesAdditionalName)) { rayPS.GetComponent <ParticleSystemRenderer>().lengthScale = (transform.position - raycastHit.point).magnitude / rayPS.main.startSize.constantMax; } } } if (CollidedInstances.Count == 0) { foreach (var effect in Effects) { if (effect != null) { if (photonView.IsMine) { var instance = PhotonNetwork.Instantiate(effect.name, position, new Quaternion()) as GameObject; //custom instance.GetComponent <SwordControl>()._teamNumber = GameObject.Find("DataBase").GetComponent <DataBaseScript>()._TeamNumber; var effectSettings = instance.GetComponent <RFX4_EffectSettings>(); var effectSettingsRoot = GetComponentInParent <RFX4_EffectSettings>(); if (effectSettings != null && effectSettingsRoot != null) { //effectSettings.EffectQuality = effectSettingsRoot.EffectQuality; // effectSettings.ForceInitialize(); } CollidedInstances.Add(instance); if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (!IsWorldSpace) { instance.transform.parent = transform; } if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } if (DestroyTime > 0.0001f) { Destroy(instance, DestroyTime); } } } } } else { foreach (var instance in CollidedInstances) { if (instance == null) { continue; } instance.transform.position = position; if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } } } } if (RealTimeUpdateRaycast) { canUpdate = true; } }
void OnCollisionEnter(Collision collision) { if (isCollided && !effectSettings.UseCollisionDetection) { return; } foreach (ContactPoint contact in collision.contacts) { if (!isCollided) { isCollided = true; //offsetColliderPoint = contact.otherCollider.transform.position - contact.point; // lastCollider = contact.otherCollider; // lastContactPoint = contact; if (UseTargetPositionAfterCollision) { if (targetAnchor != null) { Destroy(targetAnchor); } targetAnchor = new GameObject(); targetAnchor.hideFlags = HideFlags.HideAndDontSave; targetAnchor.transform.parent = contact.otherCollider.transform; targetAnchor.transform.position = contact.point; targetAnchor.transform.rotation = transform.rotation; //targetAnchor.transform.LookAt(contact.normal); } } // is a bullet bouncing? var handler = CollisionEnter; if (handler != null) { handler(this, new RFX4_CollisionInfo { HitPoint = contact.point, HitCollider = contact.otherCollider, HitGameObject = contact.otherCollider.gameObject, Collision = collision }); } if (!canExplode) { return; } if (EffectOnCollision != null) { var instance = Instantiate(EffectOnCollision, contact.point, new Quaternion()) as GameObject; if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (LookAtNormal) { instance.transform.LookAt(contact.point + contact.normal); } else { instance.transform.rotation = transform.rotation; } if (!CollisionEffectInWorldSpace) { instance.transform.parent = contact.otherCollider.transform.parent; } Destroy(instance, CollisionEffectDestroyAfter); } } foreach (var obj in DeactivateObjectsAfterCollision) { if (obj != null) { var ps = obj.GetComponent <ParticleSystem>(); if (ps != null) { ps.Stop(); } else { obj.SetActive(false); } } } if (rigid != null) { Destroy(rigid); } if (collid != null) { Destroy(collid); } }
private void OnGUI() { if (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.DownArrow)) { isButtonPressed = false; } if (GUI.Button(new Rect(10 * dpiScale, 15 * dpiScale, 135 * dpiScale, 37 * dpiScale), "PREVIOUS EFFECT") || (!isButtonPressed && Input.GetKeyDown(KeyCode.LeftArrow))) { isButtonPressed = true; ChangeCurrent(-1); } if (GUI.Button(new Rect(160 * dpiScale, 15 * dpiScale, 135 * dpiScale, 37 * dpiScale), "NEXT EFFECT") || (!isButtonPressed && Input.GetKeyDown(KeyCode.RightArrow))) { isButtonPressed = true; ChangeCurrent(+1); } var offset = 0f; if (UseMobileVersion) { offset += 50 * dpiScale; if (GUI.Button(new Rect(10 * dpiScale, 63 * dpiScale, 285 * dpiScale, 37 * dpiScale), "ON / OFF REALISTIC BLOOM") || (!isButtonPressed && Input.GetKeyDown(KeyCode.DownArrow))) { isUsedMobileBloom = !isUsedMobileBloom; RFX4_DistortionAndBloom.UseBloom = isUsedMobileBloom; } if (!isUsedMobileBloom) { guiStyleHeaderMobile.normal.textColor = new Color(0.8f, 0.2f, 0.2f); } else { guiStyleHeaderMobile.normal.textColor = new Color(0.1f, 0.6f, 0.1f); } GUI.Label(new Rect(400 * dpiScale, 15 * dpiScale, 100 * dpiScale, 20 * dpiScale), "Bloom is " + (isUsedMobileBloom?"Enabled":"Disabled"), guiStyleHeaderMobile); } if (GUI.Button(new Rect(10 * dpiScale, 63 * dpiScale + offset, 285 * dpiScale, 37 * dpiScale), "Day / Night") || (!isButtonPressed && Input.GetKeyDown(KeyCode.DownArrow))) { isButtonPressed = true; if (ReflectionProbe != null) { ReflectionProbe.RenderProbe(); } Sun.intensity = !isDay ? 0.05f : startSunIntensity; Sun.shadows = isDay ? startLightShadows : LightShadows.None; foreach (var nightLight in NightLights) { nightLight.shadows = !isDay ? startLightShadows : LightShadows.None; } Sun.transform.rotation = isDay ? startSunRotation : Quaternion.Euler(350, 30, 90); RenderSettings.ambientLight = !isDay ? new Color(0.1f, 0.1f, 0.1f) : startAmbientLight; RenderSettings.ambientIntensity = isDay ? startAmbientIntencity : 1; RenderSettings.reflectionIntensity = isDay ? startReflectionIntencity : 0.2f; isDay = !isDay; } GUI.Label(new Rect(400 * dpiScale, 15 * dpiScale + offset / 2, 100 * dpiScale, 20 * dpiScale), "Prefab name is \"" + Prefabs[currentNomber].name + "\" \r\nHold any mouse button that would move the camera", guiStyleHeader); GUI.DrawTexture(new Rect(12 * dpiScale, 120 * dpiScale + offset, 285 * dpiScale, 15 * dpiScale), HUETexture, ScaleMode.StretchToFill, false, 0); float oldColorHUE = colorHUE; colorHUE = GUI.HorizontalSlider(new Rect(12 * dpiScale, 140 * dpiScale + offset, 285 * dpiScale, 15 * dpiScale), colorHUE, 0, 360); if (Mathf.Abs(oldColorHUE - colorHUE) > 0.001) { RFX4_ColorHelper.ChangeObjectColorByHUE(currentInstance, colorHUE / 360f); var transformMotion = currentInstance.GetComponentInChildren <RFX4_TransformMotion>(true); if (transformMotion != null) { transformMotion.HUE = colorHUE / 360f; foreach (var collidedInstance in transformMotion.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, colorHUE / 360f); } } } var rayCastCollision = currentInstance.GetComponentInChildren <RFX4_RaycastCollision>(true); if (rayCastCollision != null) { rayCastCollision.HUE = colorHUE / 360f; foreach (var collidedInstance in rayCastCollision.CollidedInstances) { if (collidedInstance != null) { RFX4_ColorHelper.ChangeObjectColorByHUE(collidedInstance, colorHUE / 360f); } } } } }
private void UpdateRaycast() { RaycastHit raycastHit; if (Physics.Raycast(transform.position, transform.forward, out raycastHit, RaycastDistance)) { Vector3 position; if (UsePivotPosition) { position = raycastHit.transform.position; } else { position = raycastHit.point + raycastHit.normal * Offset; } if (CollidedInstances.Count == 0) { foreach (var effect in Effects) { var instance = Instantiate(effect, position, new Quaternion()) as GameObject; CollidedInstances.Add(instance); if (OnCollisionObject != null) { OnCollisionObject(raycastHit.collider.gameObject); } if (HUE > -0.9f) { RFX4_ColorHelper.ChangeObjectColorByHUE(instance, HUE); } if (!IsWorldSpace) { instance.transform.parent = transform; } if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } if (DestroyTime > 0.0001f) { Destroy(instance, DestroyTime); } } } else { foreach (var instance in CollidedInstances) { if (instance == null) { continue; } instance.transform.position = position; if (UseNormalRotation) { instance.transform.LookAt(raycastHit.point + raycastHit.normal); } } } } if (RealTimeUpdateRaycast) { canUpdate = true; } }