Exemple #1
0
    private void ThrowToTarget()
    {
        var targetPos   = currentZone.CurrentSnapSlot().pos + currentZone.transform.position;
        var targetXZPos = ZeroYAxis(targetPos);

        CurrentlyHeldObject.transform.LookAt(targetXZPos);

        var position = currentlyHeldObject.transform.position;
        var R        = Vector3.Distance(ZeroYAxis(position), targetXZPos);
        var G        = Physics.gravity.y;
        var tanAlpha = Mathf.Tan(throwAngle * Mathf.Deg2Rad);
        var H        = targetPos.y - position.y;

        var Vz0 = G * R * R;
        var Vz1 = H - R * tanAlpha;
        var Vz2 = 2.0f * Vz1;
        var Vz3 = Vz0 / Vz2;
        var Vz  = Mathf.Sqrt(Vz3);
        var Vy  = tanAlpha * Vz;

        var localVelocity  = new Vector3(0f, Vy, Vz);
        var globalVelocity = currentlyHeldObject.transform.TransformDirection(localVelocity);

        currentlyHeldObject.GetComponent <Rigidbody>().velocity = globalVelocity;
    }
Exemple #2
0
    public void SnapTo(ObjectSnapZone zone)
    {
        SnapTargetPos = zone.CurrentSnapSlot().pos + zone.transform.position;
        var position = transform.position;
        var points   = new[]
        {
            position,
            ((position + SnapTargetPos) / 2) + (Vector3.up * (Vector3.Distance(position, SnapTargetPos) / 2)),
            SnapTargetPos
        };
        var path   = new GoSpline(points);
        var config = new GoTweenConfig();

        config.positionPath(path, false);
        config.easeType = myEaseType;
        Go.to(transform, throwTime, config);
    }