Пример #1
0
 DropletController CreateDroplet(Vector2 pos, Vector2 dir)
 {
     var go = Instantiate(DropletPrefab, pos.AsVector3(), Quaternion.identity) as GameObject;
     var droplet = go.GetComponent<DropletController>();
     droplet.Initialize(dir);
     return droplet;
 }
Пример #2
0
    void Update()
    {
        var p0 = _oldPosition.AsVector3(transform.position.z);
        var p1 = _newPosition.AsVector3(transform.position.z);

        transform.position = Vector3.Lerp(p0, p1, (Time.time - Time.fixedTime) / Time.fixedDeltaTime);
    }
Пример #3
0
 void spawnThing(Vector2 pos)
 {
     var thingObj = Instantiate(ThingPrefab, pos.AsVector3(), Quaternion.identity) as GameObject;
     thingObj.transform.localScale *= Random.value * (LargeSize - SmallSize) + SmallSize;
     thingObj.transform.parent = transform;
     thingObj.transform.rotation = Quaternion.EulerAngles(0, 0, Random.value * 2000);
 }
Пример #4
0
    void Update()
    {
        var p0 = _oldPosition.AsVector3(transform.position.z);
        var p1 = _newPosition.AsVector3(transform.position.z);

        transform.position = Vector3.Lerp(p0, p1, (Time.time - Time.fixedTime) / Time.fixedDeltaTime);

        if (!_snap.enabled)
        {
            transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 0.2f);
        }
    }
Пример #5
0
    TreeController spawnTree(Vector2 pos)
    {
        var treeObj = Instantiate(TreePrefab, pos.AsVector3(), Quaternion.identity) as GameObject;
        treeObj.transform.localScale *= Random.value * (LargeSize - SmallSize) + SmallSize;
        treeObj.transform.parent = transform;
           //     treeObj.transform.rotation = Quaternion.EulerAngles(0, 0, Random.value * 2000);

        var treeSpring = treeObj.GetComponent<SpringJoint2D>();
        treeSpring.connectedAnchor = treeObj.transform.position.AsVector2();

        return treeObj.GetComponent<TreeController>();
    }
Пример #6
0
    public override void StateEnter()
    {
        Vector2 direction = new Vector2(Fsm.transform.localScale.normalized.x, 0f);
        Vector3 shotOffsetAccountingDirection = (_shotOffset.AsVector3() * direction.x);

        shotOffsetAccountingDirection.y = -Mathf.Abs(shotOffsetAccountingDirection.y);

        InstantiableFireball projectile = Fsm.Instantiate(_projectilePrefab).GetComponent <InstantiableFireball>();

        projectile.Launcher           = Fsm.gameObject;
        projectile.transform.position = Fsm.transform.position + shotOffsetAccountingDirection;
        projectile.transform.rotation = Quaternion.identity;
        projectile.transform.right    = Quaternion.Euler(0f, 0f, -direction.x * _shotAngle) * direction;
    }
Пример #7
0
        public void FireAt(Vector2 worldPosition)
        {
            var   worldPosInRefFrame = worldPosition.AsVector3() - transform.position;
            float z = Mathf.Atan2(worldPosInRefFrame.y, worldPosInRefFrame.x) * Mathf.Rad2Deg;

            transform.rotation = Quaternion.Euler(0f, 0f, z);

            canonFireEffect.Play(true);
            var cannonBall = Instantiate(cannonBallPrefab, transform.position, Quaternion.identity);

            if (_isFriendly)
            {
                cannonBall.SetAsFriendly();
            }

            cannonBall.SetTarget(worldPosition);
            cannonBall.AddForce(transform.right, 30);
        }
Пример #8
0
    void BuildBasePlane()
    {
        // find mins and maxes
        var points  = m_boundary.AsVector2();
        var minX    = points.Select(pt => pt.x).Min() - m_elevationGradientDistance;
        var maxX    = points.Select(pt => pt.x).Max() + m_elevationGradientDistance;
        var minY    = points.Select(pt => pt.y).Min() - m_elevationGradientDistance;
        var maxY    = points.Select(pt => pt.y).Max() + m_elevationGradientDistance;
        var sizeX   = Mathf.Abs(maxX - minX);
        var sizeY   = Mathf.Abs(maxY - minY);
        var ratioXY = sizeX / sizeY;

        // determine vertices per side
        // FIXME consts
        if (m_planeVerticesCount < 100)
        {
            throw new System.Exception("minimum plane vertices count = 100");
        }

        var verticesPerSide = Mathf.RoundToInt(Mathf.Sqrt(m_planeVerticesCount)) * 2;
        var verticesX       = Mathf.Max(5, Mathf.RoundToInt(verticesPerSide * (ratioXY / (ratioXY + 1))));
        var verticesY       = verticesPerSide - verticesX;

        // calculate distance between vertices
        var distanceX = sizeX / verticesX;
        var distanceY = sizeY / verticesY;

        // calculate triangle count
        var triangleCount = (verticesX - 1) * (verticesY - 1) * 2;

        // build vertices and triangles
        var verts     = new Vector2[verticesX * verticesY];
        var uvs       = new Vector2[verts.Length];
        var triangles = new List <int>();

        for (var i = 0; i < verticesY; ++i)
        {
            for (var j = 0; j < verticesX; ++j)
            {
                verts[i * verticesX + j] = new Vector2(minX + j * distanceX, minY + i * distanceY);
                uvs[i * verticesX + j]   = new Vector2((float)j / verticesX, (float)i / verticesY);
                if (i == verticesY - 1)
                {
                    continue;
                }

                if (j != verticesX - 1)
                {
                    triangles.Add((i + 1) * verticesX + j);
                    triangles.Add(i * verticesX + j + 1);
                    triangles.Add(i * verticesX + j);
                }
                if (j != 0)
                {
                    triangles.Add((i + 1) * verticesX + (j - 1));
                    triangles.Add((i + 1) * verticesX + j);
                    triangles.Add(i * verticesX + j);
                }
            }
        }

        m_baseMesh.vertices = verts
                              .AsVector3(transform.position.y)
                              .Select(pt => transform.InverseTransformPoint(pt))
                              .ToArray();
        m_baseMesh.triangles = triangles.ToArray();
        m_baseMesh.uv        = uvs;

        // FIXME can be optimized - we can build the map while we build the mesh
        BuildMeshIndex();
    }
Пример #9
0
    // Update is called once per frame
    void Update()
    {
        if (mParent.tutorialMode)
        {
            return;
        }

        if (mIsQuestPanelAnimating)
        {
            return;
        }

        if (Game.instance.actionSet.ToggleMap.WasPressed)
        {
            if (moreInfoView.gameObject.activeSelf)
            {
                OnLessInfoPressed();
            }
            else
            {
                OnMoreInfoPressed();
            }
        }

        // We're in 'fixed' mode while in the dungeon - readonly
        if (Game.instance.InDungeon())
        {
            return;
        }

        if (mIsMouseOver)
        {
            Vector2 mousePosition = Input.mousePosition.AsVector2();
            Vector2 diff          = mousePosition - mStartDragPosition;
            diff.y = 0;

            transform.localPosition += diff.AsVector3();

            mStartDragPosition = mousePosition;

            if (Mathf.Abs(transform.localPosition.x) >= mThreshold)
            {
                StartCoroutine(FlyToPosition(Mathf.Sign(transform.localPosition.x) * 1500f * Vector3.right, true, transform.localPosition.x > 0f));
                mIsMouseOver = false;
            }
        }

        if (Game.instance.actionSet.Like.WasPressed)
        {
            OnLikePressed();
        }

        if (Game.instance.actionSet.Dislike.WasPressed)
        {
            OnPassPressed();
        }

        if (Game.instance.actionSet.boundDevice != null)
        {
            UpdateJoystick();
        }
    }
Пример #10
0
 void fireBomb(Vector2 faceVec)
 {
     Instantiate(ExplosionPrefab, transform.position+faceVec.AsVector3(), Quaternion.identity);
 }