예제 #1
0
    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);
    }
예제 #2
0
    /**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);
        }
    }
예제 #3
0
    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;
    }
예제 #4
0
    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);
    }
예제 #5
0
    // 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;
        }
    }
예제 #6
0
 // Use this for initialization
 protected void Start()
 {
     rb   = GetComponent <Rigidbody2D>();
     grav = GetComponent <Gravitator>();
 }