public void GivenEarthsGravityField() { _gravityField = new GravityField( new Vector3(0, 0, -9.81) .SI().Metre / SI.Second.Squared); _pointMass.ForceAnchor.Connect(_gravityField); }
public void ClearField(GravityField g) { Fields.Remove(g); //if(Field == g) //{ // Field = null; //} }
//public GravityField Field; public void SetField(GravityField g) { if (!Fields.Contains(g)) { Fields.Add(g); } //if(Field == null || Field.PowerAtDist(trans.position) < g.PowerAtDist(trans.position)) //{ // Field = g; //} }
public void Detonate() { Destroy(bomb); GameObject gravityField = Instantiate(fieldPrefab, bomb.transform.position, new Quaternion()); GravityField field = gravityField.GetComponent <GravityField>(); field.skill = this; field.enemy = skillManager.enemy; field.fieldForce = fieldForce; field.fieldSize = fieldSize; field.fieldDamage = fieldDPS; Destroy(gravityField, fieldDuration); }
public void UpdateIndicator(GravityIndicator indicator, GravityField field) { Vector2 indicatorGravity = field.GetGravityAtPosition(indicator.transform.position); indicator.GravityForce = indicatorGravity; float angle = Vector2.SignedAngle(indicator.transform.right, indicatorGravity); indicator.transform.Rotate(0.0f, 0.0f, angle); float strengthT = Mathf.InverseLerp(minFieldStrength, maxFieldStrength, indicatorGravity.magnitude); float arrowLength = Mathf.Lerp(minArrowLength, maxArrowLength, strengthT); indicator.SetArrowLength(arrowLength); }
public void HandleGravityFieldUpdated(object sender, EventArgs args) { GravityField field = sender as GravityField; if (field == null) { return; } foreach (GravityIndicator indicator in indicators) { UpdateIndicator(indicator, field); } }
public override void Initialize(PlayerManager playerManager, CharacterDto character = null) { // Arena character if (character == null) { InitializeSpeed(); } // RLR Character else { Character = character; InitializeFromDto(); Ability1 = new GravityField(this, playerManager); Ability2 = new Freeze(this, playerManager); } }
/* * Create the gravity sectors with just positions for now. */ void Start() { instance = this; // amount of sectors to place along each axis int numX = Mathf.CeilToInt((boundsEnd.x - boundsStart.x) / sectorSize); int numY = Mathf.CeilToInt((boundsEnd.y - boundsStart.y) / sectorSize); int numZ = Mathf.CeilToInt((boundsEnd.z - boundsStart.z) / sectorSize); gravitySectors = new GravitySector[numX, numY, numZ]; CreateMinDistProbes(); minDistThresh = minSectorDistThreshold * sectorSize; sectorDiagDist1 = Vector3.Distance(Vector3.zero, new Vector3(0f, sectorSize, sectorSize)); sectorDiagDist2 = Vector3.Distance(Vector3.zero, new Vector3(sectorSize, sectorSize, sectorSize)); for (int x = 0; x < numX; x++) { for (int y = 0; y < numY; y++) { for (int z = 0; z < numZ; z++) { Vector3 sectorPosition = new Vector3( boundsStart.x + (x * sectorSize) + sectorSize / 2, boundsStart.y + (y * sectorSize) + sectorSize / 2, boundsStart.z + (z * sectorSize) + sectorSize / 2 ); gravitySectors[x, y, z] = new GravitySector(sectorPosition); // debug delete later //GameObject temp = GameObject.CreatePrimitive(PrimitiveType.Sphere); //temp.transform.position = sectorPosition; //temp.GetComponent<Collider>().enabled = false; } } } fieldCenter = new Vector3((boundsEnd.x - boundsStart.x) / 2, (boundsEnd.y - boundsStart.y) / 2, (boundsEnd.z - boundsStart.z) / 2); CreateGravityField(); }
public PlayerControl CreatePlayerInOrbit(GravityField f) { PlayerControl p = (PlayerControl)Instantiate(PlayerObj); float dist = Random.Range(f.NearRadius * 3, f.FarRadius * 0.7F); Vector3 vel = Utility.RandomVectorInclusive(1, 1, 1).normalized; Vector3 pos = f.transform.position + (vel * dist); pos.y = 0.0F; p.transform.position = pos; Vector3 pvel = f.transform.position - p.transform.position; pvel.Normalize(); Vector3 bvel = Vector3.up; Vector3 dotdir = Vector3.Cross(pvel, bvel).normalized; p.SetControlVel(dotdir, 80); return(p); }
public void OnTriggerEnter2D(Collider2D collision) { DelayField delayField = collision.GetComponent <DelayField>(); if (delayField) { delayFieldsImIn.Add(delayField); } GravityField gravityField = collision.GetComponent <GravityField>(); if (gravityField) { gravityFieldsImIn.Add(gravityField); } RepulseField repulseField = collision.GetComponent <RepulseField>(); if (repulseField) { repulseFieldsImIn.Add(repulseField); } }
public void OnTriggerExit2D(Collider2D other) { DelayField delayField = other.GetComponent <DelayField>(); if (delayField) { delayFieldsImIn.Remove(delayField); } GravityField gravityField = other.GetComponent <GravityField>(); if (gravityField) { gravityFieldsImIn.Remove(gravityField); } RepulseField repulseField = other.GetComponent <RepulseField>(); if (repulseField) { repulseFieldsImIn.Remove(repulseField); } }
void Start() { if (rendererPlayer == null) { rendererPlayer = GameObject.Find("Default").GetComponent <Renderer>(); } rbd = GetComponent <Rigidbody>(); Health = MaxHealth = 100; // Default invincibility time should be .5 second if (invincibilityTime == 0) { invincibilityTime = .5f; } // Instantiate GravityField gravityField = new GravityField(transform.position, 500, 20); // Subscribe to event that fires when trail is completed TrailController.CallOnTrailCompleted += OnTrailCompleted; // Show appropriate popup for the level switch (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name) { case "Level01": UIBehaviour.PopupText(Vector3.zero, "Small obstacles can be easily moved by gravitational attraction, use it to move them away!\n[Touch the screen]", Color.yellow); break; case "Level02": UIBehaviour.PopupText(Vector3.zero, "Moving platforms cannot be attracted by gravity - dodge them!", Color.yellow); break; case "Level03": UIBehaviour.PopupText(Vector3.zero, "Level not implemented - loaded Level01", Color.yellow); break; } }
void SpawnGravity(Vector3 center, float magnitude) { gravityField = new GravityField(center, magnitude, 20); }
// void OnTriggerStay(Collider other) { // if (other.tag != "gravity field") return; // // If we are strong enough to pick up the other object // if (GameManager.S.GetDestroyedScore() >= threshold && !beingDestroyed) { // // transform.parent = other.transform; // // Vector faces towards the center of the gravity field // // var vec = other.transform.position - transform.position; // // Normalize the magnitude b/w 0 and 1 to put on the force curve // // float normDist = Mathf.Clamp01(vec.magnitude / _Collider.radius); // //if (vec.magnitude > _Collider.radius) normDist = 1; // // Moves based on time and not distance // // transform.position = Vector3.MoveTowards(transform.position, other.transform.position, Time.deltaTime * 5); // // Decrease other object's size exponentially // // TODO: why does size increase? // // if (vec.magnitude < 1f && vec.magnitude > 0.05f && other.transform.localScale.magnitude > 0.001f) { // // other.transform.localScale *= vec.magnitude; // // } // // Moved moving and shrinking into the coroutine // } // } void OnTriggerEnter(Collider other) { // If we clash into another object when gravity disable or we're // being sucked in if ((suckedIn || gravityDisabled) && ((1 << other.gameObject.layer) & destroyableObjMask) != 0) { // if (audioSource != null) { // SoundManager.instance.PlayDebrisHit(audioSource); // } if (GameManager.S.audioSourcesInstantiated < 10 && audioSource != null) { GameManager.S.audioSourcesInstantiated++; var obj = new GameObject(); obj.AddComponent(typeof(AudioSource)); obj.AddComponent(typeof(DestroyableObjAudio)); obj.transform.parent = null; obj.transform.position = transform.position; obj.GetComponent <DestroyableObjAudio>().PlayHit(); } } // Once object gets close enough to touch frisbee, destroy it // if (other.tag == "Frisbee") { // other.GetComponentInParent<Frisbee>().IncreaseGravityField(); // if (GameManager.S.GetDestroyedScore() >= threshold) StartCoroutine(DisappearEffect(0.25f)); // } // Suspend enviornmental gravity when being pulled by the frisbee if (other.tag == "gravity field" && GameManager.S.GetCurrentTier() >= tier) { suckedIn = true; RaycastHit hit; // If there's no force field in the way if (!Physics.Raycast(other.transform.position, (transform.position - other.transform.position).normalized, out hit, (transform.position - other.transform.position).magnitude, LayerMask.GetMask("Force Field"))) { if (rigidBodyExists) { if (useGravity) { rigidbody.useGravity = false; } rigidbody.isKinematic = true; //rigidbody.detectCollisions = false; } frisbee = other.transform; originalPosition = transform.position; SoundManager.instance.PlayAbsorb(); frisbee.GetComponentInParent <Frisbee>().IncreaseGravityField(); StartCoroutine(DisappearEffect(0.5f)); GravityField gf = other.GetComponent <GravityField>(); if (gf.firstItemSucceed) { return; } gf.firstItemSucceed = true; SoundManager.instance.PlayItemSucceed(); } else { print("Obstructed by force field: " + hit.transform.name); } } // Play fail-to-absorb sound if we haven't already else if (other.tag == "gravity field" && GameManager.S.GetCurrentTier() < tier) { suckedIn = false; GravityField gf = other.GetComponent <GravityField>(); if (gf.firstItemFailed) { return; } gf.firstItemFailed = true; SoundManager.instance.PlayItemFail(); } }
public override void OnInspectorGUI() { Styles(); serializedObject.Update(); var intensity = serializedObject.FindProperty("_intensities"); var range = serializedObject.FindProperty("_range"); var width = serializedObject.FindProperty("_width"); var lenght = serializedObject.FindProperty("_lenght"); var ground = serializedObject.FindProperty("_groundHeigh"); var distancePow = serializedObject.FindProperty("_distancePow"); var distanceLerp = serializedObject.FindProperty("_distanceLerper"); var center = serializedObject.FindProperty("_center"); EditorGUILayout.BeginHorizontal(); int typeIndex = serializedObject.FindProperty("type").enumValueIndex; if (GUILayout.Button("<", arrowStyle, GUILayout.Height(50))) { GravityField.SwitchType(ref typeIndex, -1); } EditorGUILayout.LabelField(GravityField.TypeString((GravityField.Type)typeIndex) + " Field", titleStyle, GUILayout.Height(titleHeight)); if (GUILayout.Button(">", arrowStyle, GUILayout.Height(50))) { GravityField.SwitchType(ref typeIndex, 1); } serializedObject.FindProperty("type").enumValueIndex = typeIndex; EditorGUILayout.EndHorizontal(); intensity.vector2Value = EditorGUILayout.Vector2Field("Intensity : ", intensity.vector2Value); distancePow.floatValue = EditorGUILayout.FloatField("Distance Pow : ", distancePow.floatValue); distanceLerp.floatValue = EditorGUILayout.FloatField("Distance Lerp Pow : ", distanceLerp.floatValue); center.vector3Value = EditorGUILayout.Vector3Field("Center : ", center.vector3Value); switch ((GravityField.Type)typeIndex) { default: break; case GravityField.Type.TwoSided: goto case GravityField.Type.Flat; case GravityField.Type.Flat: Vector3 size = new Vector3(width.floatValue, range.floatValue, lenght.floatValue); size = EditorGUILayout.Vector3Field("Size : ", size); width.floatValue = size.x; range.floatValue = size.y; lenght.floatValue = size.z; break; case GravityField.Type.Spherical: range.floatValue = EditorGUILayout.FloatField("Radius : ", range.floatValue); ground.floatValue = EditorGUILayout.FloatField("Ground Radius : ", ground.floatValue); break; } serializedObject.ApplyModifiedProperties(); }
void Start() { _field = GetComponentInChildren<GravityField>(); _field.SetPullForce(this.pullForce); }
// Use this for initialization void Start() { ArenaDown = Vector3.zero; FloatingBody = GetComponent <Rigidbody>(); gravity_field = GameObject.FindGameObjectWithTag(Tags.Arena).GetComponent <GravityField>(); }
void DespawnGravity() { gravityField.Stop(); Destroy(gravityField.GravityGameObject); gravityField = null; }
public GravityEntry(GravityForm _form, Dictionary <string, object> _jsonObject) { form = _form; jsonObject = _jsonObject; id = jsonObject.ContainsKey("id") && jsonObject["id"] != null?Int32.Parse(jsonObject["id"].ToString()) : -1; form_id = jsonObject.ContainsKey("form_id") ? jsonObject["form_id"]?.ToString() : null; created_by = jsonObject.ContainsKey("created_by") && jsonObject["created_by"] != null?Int32.Parse(jsonObject["created_by"].ToString()) : -1; date_created = jsonObject.ContainsKey("date_created") ? jsonObject["date_created"]?.ToString() : null; is_starred = (jsonObject.ContainsKey("is_starred") && jsonObject["is_starred"] != null ? Int32.Parse(jsonObject["is_starred"].ToString()) : 0) == 1; is_read = (jsonObject.ContainsKey("is_read") && jsonObject["is_read"] != null ? Int32.Parse(jsonObject["is_read"].ToString()) : 0) == 1; ip = jsonObject.ContainsKey("ip") ? jsonObject["ip"]?.ToString() : null; source_url = jsonObject.ContainsKey("source_url") ? jsonObject["source_url"]?.ToString() : null; post_id = jsonObject.ContainsKey("post_id") && jsonObject["post_id"] != null?Int32.Parse(jsonObject["post_id"].ToString()) : -1; user_agent = jsonObject.ContainsKey("user_agent") ? jsonObject["user_agent"]?.ToString() : null; status = jsonObject.ContainsKey("status") ? jsonObject["status"]?.ToString() : null; currency = jsonObject.ContainsKey("currency") ? jsonObject["currency"]?.ToString() : null; payment_status = jsonObject.ContainsKey("payment_status") ? jsonObject["payment_status"]?.ToString() : null; payment_date = jsonObject.ContainsKey("payment_date") ? jsonObject["payment_date"]?.ToString() : null; payment_amount = jsonObject.ContainsKey("payment_amount") && jsonObject["payment_amount"] != null?Decimal.Parse(jsonObject["payment_amount"].ToString()) : -1; transaction_id = jsonObject.ContainsKey("transaction_id") ? jsonObject["transaction_id"]?.ToString() : null; is_fulfilled = (jsonObject.ContainsKey("is_fulfilled") && jsonObject["is_fulfilled"] != null ? Int32.Parse(jsonObject["is_fulfilled"].ToString()) : 0) == 1; transaction_type = jsonObject.ContainsKey("transaction_type") && jsonObject["transaction_type"] != null?Int32.Parse(jsonObject["transaction_type"].ToString()) : -1; if (form != null) { foreach (var field in form.fields) { foreach (var kvp in jsonObject) { if (kvp.Key == field.id || kvp.Key.StartsWith(field.id + ".")) { string value = ""; var listVal = kvp.Value as IEnumerable <object>; if (listVal != null) { value = listVal.Select(l => (l?.ToString()) ?? "").Aggregate((a, b) => a + "," + b); } else { value = kvp.Value?.ToString(); } if (field.type == "list") //label.Contains("Partici") ) { var fluff = value; int a = 0; a++; //kvp.Key = id 21 // field.description = "" // field.id = "21" //field.inputs = null // field.label = "Course Participant Details" // field.@type = "list" // value = [{"First Name":"Blayde","Last Name":"Mager","Email":"*****@*****.**","Mobile":"1234567"}] var entryDictionaries = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(value); int i = 101; foreach (var entryDictionary in entryDictionaries) { foreach (var subKVP in entryDictionary) { var subField = new GravityField() { description = "", id = i.ToString(), inputs = null, label = subKVP.Key.ToString(), type = "string" }; formValues.Add(i.ToString(), new Tuple <GravityField, string, string>(subField, i.ToString(), subKVP.Value)); i++; } } } if (formValues.ContainsKey(kvp.Key)) { throw new Exception(kvp.Key + " already exists"); } else { formValues.Add(kvp.Key, new Tuple <GravityField, string, string>(field, kvp.Key, value)); } } } } } else { foreach (var kvp in jsonObject) { string value = ""; var listVal = kvp.Value as IEnumerable <object>; if (listVal != null) { value = listVal.Select(l => (l?.ToString()) ?? "").Aggregate((a, b) => a + "," + b); } else { value = kvp.Value?.ToString(); } if (formValues.ContainsKey(kvp.Key)) { throw new Exception(kvp.Key + " already exists"); } else { formValues.Add(kvp.Key, new Tuple <GravityField, string, string>(null, kvp.Key, value)); } } } }