예제 #1
0
    private void setup(ExploreCat targ)
    {
        Vector2 targetPos = new Vector2(targ.getRigidBody2D().position.x, targ.getRigidBody2D().position.y + 0.5f);
        Vector2 dir       = targetPos - getRigidBody2D().position;

        dir.Normalize();
        dir *= this.speed;
        switch (sprite)
        {
        case SecondaryType.Star:
        case SecondaryType.Gem:
        case SecondaryType.Nebula:
        case SecondaryType.Snowflake:
        case SecondaryType.Rose:
            //rotate motion
            getRigidBody2D().angularVelocity = speed + 50f;
            getRigidBody2D().velocity        = dir;
            getRigidBody2D().gravityScale    = 0;
            break;

        case SecondaryType.Bubbles:
        case SecondaryType.Butterfly:
        case SecondaryType.Leaf:
        case SecondaryType.Rainbow:

            // direct hit
            getRigidBody2D().gravityScale = 0;
            getRigidBody2D().velocity     = dir;
            transform.localEulerAngles    = Vector3.zero;
            break;

        case SecondaryType.Heart:
        case SecondaryType.Music:
        case SecondaryType.Arrow:
            getRigidBody2D().gravityScale = 0;
            getRigidBody2D().velocity     = dir;
            rigidBody.constraints         = RigidbodyConstraints2D.FreezeRotation;
            break;

        case SecondaryType.Bat:
        case SecondaryType.Skull:
            getRigidBody2D().gravityScale = UnityEngine.Random.Range(0.7f, 0.9f);
            getRigidBody2D().velocity     = calculateArc(targ);
            rigidBody.constraints         = RigidbodyConstraints2D.FreezeRotation;
            break;

        default:
            //arc motion -> simulate gravity?
            getRigidBody2D().gravityScale = UnityEngine.Random.Range(0.7f, 0.9f);
            getRigidBody2D().velocity     = calculateArc(targ);
            break;
        }
    }