public void FixedUpdate() { gravitationDrag = 0.0f; for (int i = 0; i < allGravitarors.Length; i++) { Gravitator gravitator = allGravitarors [i]; ApplyGravity(gravitator); } speed = myRigidBody.velocity.magnitude; myRigidBody.AddRelativeForce(Vector3.forward * Time.fixedDeltaTime * gravitationDrag * forceMultiplier, ForceMode.Impulse); }
/**public void OnCollisionExit(Collision collision) * { * particleDie.Stop(); * particleChoque.Stop(); * particleWin.Stop(); * }*/ protected void OnTriggerStay(Collider other) { if (other.gameObject.tag == "Gravity") { Gravitator obj = other.GetComponent <Gravitator>(); var center = obj.Middle; var P1 = center.position; var Vect = P1 - transform.position; var Magn = Vect.magnitude; var Dir = Vect / Magn; GetComponent <Rigidbody>().AddForce(Vect * (force - Magn), ForceMode.Acceleration); } }
private void ApplyGravity(Gravitator gravitator) { float gravitatorDistance = Vector3.Distance(gravitator.transform.position, transform.position); float gravitatorMultiplier = gravitator.strength / gravitatorDistance; Vector3 gravitatorDir = gravitator.transform.position - transform.position; float rotatationSpeed = gravitatorMultiplier * gravitatorMultiplier * gravitatorMultiplier; Vector3 inverseVect = transform.InverseTransformPoint(gravitator.transform.position); float rotationAngle = Mathf.Atan2(inverseVect.x, inverseVect.z) * Mathf.Rad2Deg; Vector3 rotationVelocity = (Vector3.up * rotationAngle); Vector3 deltavel = (rotationVelocity - myRigidBody.angularVelocity); myRigidBody.AddTorque(deltavel * rotatationSpeed, ForceMode.Impulse); gravitationDrag += gravitatorMultiplier; }
public void SetUp() { foreach (Transform t in gameObject.GetComponentsInChildren <Transform>()) { if (t.GetComponent <SkinnedMeshRenderer>() != null) { t.GetComponent <SkinnedMeshRenderer>().enabled = false; } } Transform[] transforms = root.GetComponentsInChildren <Transform>(); foreach (Transform t in transforms) { if (t.GetComponent <StickJoint>() == null && t != root) { joints.Add(t.gameObject.AddComponent <StickJoint>()); } if (t.GetComponent <SkinnedMeshRenderer>() != null) { t.GetComponent <SkinnedMeshRenderer>().enabled = false; } } foreach (StickJoint stick in joints) { stick.FindLink(); } if (GetComponent <Animator>() != null) { GetComponent <Animator>().cullingMode = AnimatorCullingMode.AlwaysAnimate; } if (gameObject.GetComponent <Gravitator>() != null) { Destroy(gameObject.GetComponent <Gravitator>()); } Gravitator grav = gameObject.AddComponent <Gravitator>(); grav.root = root; grav.Init(creationType, density); DestroyImmediate(this); }
// Use this for initialization void Start() { rb = GetComponent <Rigidbody2D>(); // co = GetComponent<Collider2D>(); grav = GetComponent <Gravitator>(); playerHealth = maxPlayerHealth; facingRight = true; GameObject heart = hearts.transform.GetChild(0).gameObject; GameObject lastHeart = heart; heartList = new GameObject[playerHealth]; heartList[0] = lastHeart; for (int i = 1; i < playerHealth; i++) { lastHeart = Instantiate(heart); lastHeart.transform.parent = hearts.transform; lastHeart.transform.localPosition = new Vector3(i * 20, 0, 0); lastHeart.transform.localScale = new Vector3(50, 50, 1); heartList[i] = lastHeart; } }
// Use this for initialization protected void Start() { rb = GetComponent <Rigidbody2D>(); grav = GetComponent <Gravitator>(); }