Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        Vector2 player_pos = FindObjectOfType <BabyCowScript>().transform.position;

        if (cur_state == CowState.Idle)
        {
            Vector2 pos = transform.position;
            transform.position = new Vector3(pos.x, pos.y - speed * Time.deltaTime, -3);
            if (Vector2.Distance(player_pos, gameObject.transform.position) < flock_range)
            {
                cur_state = CowState.Following;
                FindObjectOfType <BabyCowScript>().AddScore(1);
            }
        }

        if (cur_state == CowState.Following)
        {
            if (Vector2.Distance(player_pos, gameObject.transform.position) < flock_range)
            {
                gameObject.transform.rotation = Quaternion.RotateTowards(rgbd.transform.rotation,
                                                                         Quaternion.Euler(0, 0, master_angle), rot_rate);
                rgbd.transform.Translate(Vector3.up * master_speed);
            }
            else
            {
                float rot_val = 180 * Mathf.Atan((player_pos.y - rgbd.transform.position.y) /
                                                 (player_pos.x - rgbd.transform.position.x)) / Mathf.PI;
                rot_val = player_pos.x - rgbd.transform.position.x < 0 ? rot_val + 90 : rot_val - 90;
                gameObject.transform.rotation =
                    Quaternion.RotateTowards(rgbd.transform.rotation, Quaternion.Euler(0, 0, rot_val), 5.0f);
                rgbd.transform.Translate(Vector3.up * master_speed);
            }
        }
    }
Esempio n. 2
0
 // Update is called once per frame
 void Update()
 {
     if (Vector2.Distance(transform.position, target.position) > bufferArea)
     {
         transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
     }
 }
Esempio n. 3
0
    /*
     * Translates crosshair position based on mouse input.
     */
    private void TranslateCrosshair()
    {
        float   mouseX    = Input.GetAxis("Mouse X");
        float   mouseY    = Input.GetAxis("Mouse Y");
        float   XPrime    = mouseX + currentCursor.transform.position.x;
        float   YPrime    = mouseY + currentCursor.transform.position.y;
        Vector2 newPos    = (shortHand) ? new Vector2(XPrime, YPrime) + ((Vector2)centerPivot.transform.position - lastCharPos) : new Vector2(XPrime, YPrime);
        Vector2 centerPos = new Vector2(centerPivot.transform.position.x, centerPivot.transform.position.y);
        float   radius    = Vector2.Distance(newPos, centerPos);

        angleToPlayer = Mathf.Atan2(newPos.y - centerPos.y, newPos.x - centerPos.x);
        angleToPlayer = angleToPlayer * Mathf.Rad2Deg;
        angleToPlayer = (angleToPlayer < 0) ? angleToPlayer + 360 : angleToPlayer;

        if (shortHand)
        {
            Cursor.lockState = CursorLockMode.Locked;

            if (radius > maxRadius)
            {
                Vector2 diff = newPos - centerPos;
                diff  *= maxRadius / radius;
                newPos = centerPos + diff;
            }
            currentCursor.transform.position = newPos;
            lastCharPos = centerPivot.transform.position;
        }
        else
        {
            Cursor.lockState = CursorLockMode.Confined;
            Vector3 temp = Input.mousePosition;
            currentCursor.transform.position = Camera.main.ScreenToWorldPoint(temp);
        }
    }
Esempio n. 4
0
 private void movement()
 {
     if (Vector2.Distance(transform.position, target.position) > stopDist)
     {
         Chase();
     }
 }
Esempio n. 5
0
    /**************
    * Behaviours *
    **************/
    void chase()
    {
        // Save data
        had_LOS         = true;
        last_player_pos = player.position;

        //move toward the player, but not too close!
        if (Vector2.Distance(transform.position, player.position) >= social_distance)
        {
            transform.position = Vector2.MoveTowards(transform.position, player.position,
                                                     movespeed * Time.deltaTime * TimeManager.Instance.getTimeMultiplier());
        }
        //rotate to look at the player
        transform.right = player.position - transform.position;

        //shoot when possible
        if (shoot_timer <= 0f)
        {
            shoot();
            shoot_timer = Random.Range(shoot_timer_length_min, shoot_timer_length_max);
        }
        else
        {
            shoot_timer -= Time.deltaTime * TimeManager.Instance.getTimeMultiplier();
        }
    }
Esempio n. 6
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (path == null)
        {
            return;
        }

        if (currentWaypoint >= path.vectorPath.Count)
        {
            reachedEndOfPath = true;
            return;
        }
        else
        {
            reachedEndOfPath = false;
        }

        Vector2 direction = ((Vector2)path.vectorPath[currentWaypoint] - rb.position).normalized;
        Vector2 force     = direction * speed * Time.deltaTime;

        rb.AddForce(force);

        //Vector2 directionToWaypoint = path.vectorPath[currentWaypoint] - transform.position;
        //float distanceDelta = speed * Time.deltaTime;
        //transform.Translate(directionToWaypoint * distanceDelta);

        float distance = Vector2.Distance(transform.position, path.vectorPath[currentWaypoint]);

        if (distance < nextWaypointDistance)
        {
            currentWaypoint++;
        }
    }
Esempio n. 7
0
 public override void Update()
 {
     base.Update();
     if (Vector2.Distance(transform.position, player.position) < 10f && canCastSkill)
     {
         CastSkill();
     }
     if (!canCastSkill)
     {
         skillTimer += Time.deltaTime;
         if (skillTimer >= skillCoolDown)
         {
             canCastSkill = true;
             skillTimer   = 0f;
         }
     }
     if (castingSkill)
     {
         base.isHurt   = true;
         castingTimer += Time.deltaTime;
         if (castingTimer >= castingSkillTime)
         {
             castingSkill = false;
             castingTimer = 0f;
             base.isHurt  = false;
         }
     }
 }
Esempio n. 8
0
    private void Orbit()
    {
        x -= +Input.GetAxis("Mouse X") * sensitivity;
        y -= +Input.GetAxis("Mouse Y") * sensitivity;
        x  = Mathf.Clamp(x, -maxOrbit, maxOrbit);
        y  = Mathf.Clamp(y, -maxOrbit, maxOrbit);


        Vector2 centerPos = new Vector2(0, 0);
        Vector2 newPos    = new Vector2(x, y);
        float   radius    = Vector2.Distance(newPos, centerPos);



        if (radius > maxRadius)
        {
            Vector2 diff = newPos - centerPos;
            diff  *= maxRadius / radius;
            newPos = centerPos + diff;
        }


        playerCamera.m_FollowOffset.x = -newPos.x;
        playerCamera.m_FollowOffset.y = -newPos.y;
    }
Esempio n. 9
0
        public void Scale(Vector3 clickInWorldPos, List <ControlPoint> points, List <Vector2> originalPositions)
        {
            clickInWorldPos.y = transformPoint.y;

            var delta = clickInWorldPos - (Vector3)transformPoint;

            var distance = Vector2.Distance(clickInWorldPos, transformPoint);

            distance *= scaleSpeed * Mathf.Sign(delta.x);

            Matrix3x3 scaleMat = Matrix3x3.TranslateMatrix(transformPoint.x, transformPoint.y) * Matrix3x3.ScaleMatrix(1 + distance, 1 + distance) * Matrix3x3.TranslateMatrix(-transformPoint.x, -transformPoint.y);

            for (var i = 0; i < points.Count; i++)
            {
                var point = points[i];
                var pos   = scaleMat * originalPositions[i];
                //point.position = originalPositions[i] + (originalPositions[i] - transformPoint).normalized * (Vector2.Distance(originalPositions[i], transformPoint) * distance);
                point.position = pos;
            }

            onDraw = () =>
            {
                Draw.Line(transformPoint, clickInWorldPos, .2f, pointColor);
            };
        }
Esempio n. 10
0
    /// <summary>
    /// Gets the nearby vertex indice of the vertex closest to the point
    /// </summary>
    /// <param name="point">the position you are looking for nearby vertices from.</param>
    /// <param name="searchRadius">the radius you want to search around the point by</param>
    /// <returns>Returns an integer index on this object's vertex array, or it returns -1 as a null</returns>
    public int getNearbyVerticeIndex(Vector3 point, float searchRadius, int triangleIndex)
    {
        point = transform.InverseTransformPoint(point);
        int   closest           = -1;
        float shortest_distance = searchRadius;


        Mesh mesh = meshFilter.sharedMesh;

        Vector3[] vertices  = mesh.vertices;
        int[]     triangles = mesh.triangles;
        Vector3[] verts     = { vertices[triangles[triangleIndex * 3 + 0]],
                                vertices[triangles[triangleIndex * 3 + 1]],
                                vertices[triangles[triangleIndex * 3 + 2]] };
        int       i = triangles[triangleIndex * 3];

        foreach (var vert in verts)
        {
            float our_distance = Vector2.Distance(vert, point);
            if (our_distance < shortest_distance)
            {
                shortest_distance = our_distance;
                closest           = i;
            }
            i++;
        }
        return(closest);
    }
Esempio n. 11
0
        static void SplitCurveInHalf(BezierCurve curve, float tBegin, float tEnd, HashSet <Vector2Int> outHash)
        {
            Vector2 beginValue = curve.GetValue(tBegin),
                    endValue   = curve.GetValue(tEnd);

            int endX = Mathf.RoundToInt(endValue.x),
                endY = Mathf.RoundToInt(endValue.y);

            int beginX = Mathf.RoundToInt(beginValue.x),
                beginY = Mathf.RoundToInt(beginValue.y);

            int dxAbs = Mathf.Abs(endX - beginX),
                dyAbs = Mathf.Abs(endY - beginY);

            bool endSplit = dxAbs == 1 && dyAbs == 0 || dyAbs == 1 && dxAbs == 0 ||
                            Vector2.Distance(beginValue, endValue) <= 0.25f;

            if (!endSplit)
            {
                float mid = Mathf.Lerp(tBegin, tEnd, 0.5f);
                SplitCurveInHalf(curve, tBegin, mid, outHash);
                SplitCurveInHalf(curve, mid, tEnd, outHash);

                return;
            }

            var point = new Vector2Int(endX, endY);

            outHash.Add(point);
        }
Esempio n. 12
0
    // Update is called once per frame
    public virtual void Update()
    {
        healthBar.setHealthBar(health);
        if (Vector2.Distance(transform.position, player.position) < 45f)
        {
            canChase = true;
        }

        if (isHurt == true)
        {
            canChase   = false;
            hurtTimer += Time.deltaTime;
        }
        if (hurtTimer >= hurtResetTime)
        {
            hurtTimer   = 0;
            isHurt      = false;
            canChase    = true;
            rb.velocity = Vector2.zero;
        }

        if (canChase && !PlayerController.instance.isDead)
        {
            ChaseFilter();
        }

        if (health <= 0)
        {
            Dead(shooter);
        }
        if (PlayerController.instance.isDead)
        {
            rb.velocity = Vector2.zero;
        }
    }
Esempio n. 13
0
 private void Update()
 {
     if (Vector2.Distance(shooter.position, transform.position) > 30)
     {
         Destroy(gameObject);
     }
 }
    /// <summary>
    /// Within every frame, it checks if the game is still running and then calculates where the enemy has to move
    /// to get to the next way point, when the final way point is reached the enemy will be destroyed.
    /// </summary>
    protected new void Update()
    {
        base.Update();
        if (_gc.gameState == GameManager.GameState.Running)
        {
            var dir = Vector3.Scale(new Vector3(1, 0, 1), _target.position - transform.position);
            transform.Translate(dir.normalized * (speed * Time.deltaTime), Space.World);

            var position   = transform.position;
            var position2d = new Vector2(position.x, position.z);

            var targetPosition = _target.transform.position;
            var target2d       = new Vector2(targetPosition.x, targetPosition.z);

            if (Vector2.Distance(position2d, target2d) <= 0.1f)
            {
                if (_waypointIndex >= Waypoints.waypoints.Length)
                {
                    EndPointReached();
                }
                else
                {
                    NextWaypoint();
                }
            }
        }
    }
Esempio n. 15
0
 private void HandleSnapping()
 {
     if (Vector2.Distance(_back.position, _front.position) <= 1f)
     {
         Snap();
         State = PlayerStates.Snapped;
     }
 }
Esempio n. 16
0
    void Update()
    {
        if (Vector2.Distance(transform.position, target) <= nearDistance)
        {
            OnPlayerReachedTarget();
        }

        //Move();
    }
Esempio n. 17
0
    // Function for landing on feet
    void landingRotation()
    {
        float feetDist    = Vector2.Distance(landingPoint.position, currentTarget);
        float generalDist = Vector2.Distance(transform.position, currentTarget);

        if (feetDist > generalDist * 0.85)
        {
            transform.Rotate(0.0f, 0.0f, 50.0f);
        }
    }
Esempio n. 18
0
    private bool canSeePlayer()
    {
        // check if the enemy is close enough to charge
        if (Vector2.Distance(transform.position, target.position) <= visibilityDistance)
        {
            return(true);
        }

        // the player was not detected within either view
        return(false);
    }
Esempio n. 19
0
    public void GoTo(Vector2 pos)
    {
        if (Vector2.Distance(pos, transform.position) > nearDistance)
        {
            isMoving = true;
            heroAnimator.SetBool("Moving", isMoving);
        }

        reachedTarget = false;
        target        = pos;
    }
Esempio n. 20
0
 public void ChaseFilter()
 {
     if (Vector2.Distance(transform.position, player.position) >= maxDistance)
     {
         Chase(center, moveSpeed / 2);
     }
     else
     {
         Chase(player, moveSpeed);
     }
 }
Esempio n. 21
0
 void SetNextPositionTarget()
 {
     if (Vector2.Distance(_target.transform.position, transform.position) < Sight)
     {
         currentPositionTarget = _target.transform.position;
     }
     else
     {
         currentPositionTarget = new Vector2(Random.Range(transform.position.x - Sight, transform.position.x + Sight),
                                             Random.Range(transform.position.y - Sight, transform.position.y + Sight));
     }
 }
Esempio n. 22
0
        private void GetBounds(out float width, out float height, out float offsetX, out float offsetY)
        {
            var mainCamera = Camera.main;

            var z          = mainCamera.gameObject.transform.position.z;
            var topRight   = mainCamera.ViewportToWorldPoint(new Vector3(1, 1, -z));
            var bottomLeft = mainCamera.ViewportToWorldPoint(new Vector3(0, 0, -z));

            width   = Vector2.Distance(new Vector2(bottomLeft.x, 0), new Vector2(topRight.x, 0));
            height  = Vector2.Distance(new Vector2(0, topRight.y), new Vector2(0, bottomLeft.y));
            offsetX = bottomLeft.x;
            offsetY = topRight.y;
        }
Esempio n. 23
0
    /**
     * Executes enemy movement
     */

    private void movement()
    {
        if (Vector2.Distance(transform.position, target.position) > stopDist)
        {
            if (canSeePlayer())
            {
                Chase();
            }
            else
            {
                wander();
            }
        }
    }
Esempio n. 24
0
    void MoveToWaypoint()
    {
        var targetPosition    = waypoints[waypointIndex].position;
        var movementThisFrame = waveConfig.GetMoveSpeed() * Time.deltaTime;

        transform.position = Vector2.MoveTowards(transform.position, targetPosition, movementThisFrame);

        float distance = Vector2.Distance(targetPosition, transform.position);

        if (transform.position == targetPosition)
        {
            waypointIndex++;
        }
    }
Esempio n. 25
0
    //Vérifie si le joueur est dans la ligne de vue du monstre
    protected bool InlineofSight()
    {
        Vector3 playerdirection = (player.transform.position - transform.position).normalized;


        RaycastHit2D hit = Physics2D.Raycast(transform.position, playerdirection,
                                             Vector2.Distance(transform.position, player.transform.position), 256);

        if (!hit.collider)
        {
            return(true);
        }
        return(false);
    }
Esempio n. 26
0
        private IEnumerator MoveJob(Vector2 waypoint)
        {
            Vector2 start    = transform.position;
            float   dist     = Vector2.Distance(start, waypoint);
            float   progress = 0;

            while (Vector2.Distance(waypoint, transform.position) > float.Epsilon)
            {
                transform.position = Vector2.Lerp(start, waypoint, progress);
                yield return(null);

                progress += MovementSpeed * Time.deltaTime / dist;
            }
        }
Esempio n. 27
0
        void Update()
        {
            if (_healthManager.IsDead)
            {
                _rb.Sleep();
                _rb.velocity        = Vector2.zero;
                _rb.angularVelocity = 0;
                return;
            }


            _spriteRenderer.flipX = _rb.velocity.x < 0;

            if (_rb.velocity.magnitude > 0.3)
            {
                if (_isIdle)
                {
                    _animator.SetBool("isIdle", false);
                }
                _isIdle = false;
            }
            else
            {
                if (!_isIdle)
                {
                    _animator.SetBool("isIdle", true);
                }
                _isIdle = true;
            }

            if (cd <= 0)
            {
                if (Vector2.Distance(transform.position, currentPositionTarget) < 1.4)
                {
                    cd = 1.0f;
                }
                else
                {
                    _rb.AddForce((currentPositionTarget - (Vector2)transform.position) * _speed);
                }
            }
            else
            {
                cd = cd - Time.deltaTime;
                if (cd <= 0)
                {
                    SetNextPositionTarget();
                }
            }
        }
Esempio n. 28
0
    // Update is called once per frame
    void Update()
    {
        if (!canMove)
        {
            return;
        }

        if (Vector2.Distance(transform.position, player.position) > maxDistance)
        {
            transform.position = new Vector3(player.position.x - maxDistance, transform.position.y, 0);
        }

        transform.position = transform.position + (transform.right * (speed * Time.deltaTime));
    }
Esempio n. 29
0
    void Update()
    {
        if (Vector2.Distance(transform.position, target.position) >= distance)
        {
            transform.position = Vector2.MoveTowards(transform.position,
                                                     target.position, (speed.value + 2) * Time.deltaTime);
        }
        if (Input.GetButtonDown("Fire1"))
        {
            if (laser.value)
            {
                GameObject bullet = ObjectPooler.Instance.GetPooledObject("Laser Bullet");
                if (bullet != null)
                {
                    bullet.transform.position = transform.position;
                    bullet.SetActive(true);
                }
            }
            else
            {
                GameObject bullet = ObjectPooler.Instance.GetPooledObject("Player Bullet");
                if (bullet != null)
                {
                    bullet.transform.position = transform.position;
                    bullet.SetActive(true);
                }
            }

            if (doubleM.value)
            {
                GameObject bullet = ObjectPooler.Instance.GetPooledObject("Double Bullet");
                if (bullet != null)
                {
                    bullet.transform.position = transform.position;
                    bullet.SetActive(true);
                }
            }

            if (missile.value)
            {
                GameObject bullet = ObjectPooler.Instance.GetPooledObject("Missile Bullet");
                if (bullet != null)
                {
                    bullet.transform.position = transform.position;
                    bullet.SetActive(true);
                }
            }
        }
    }
Esempio n. 30
0
 public void Update()
 {
     transform.position = Vector2.MoveTowards(transform.position, moveSpots[randomSpot].position, speed * Time.deltaTime);
     if (Vector2.Distance(transform.position, moveSpots[randomSpot].position) < 0.2f)
     {
         if (waitTime < -0)
         {
             randomSpot = Random.Range(0, moveSpots.Length);
             waitTime   = startWaitTime;
         }
         else
         {
             waitTime -= Time.deltaTime;
         }
     }
 }