예제 #1
0
 public void UpdateRotation(float a)
 {
     angle              = a;
     direction          = CS_Utils.DegreeToPoint(a);
     transform.rotation = Quaternion.Euler(0.0f, 0.0f, a - 90);
     rb.velocity        = direction * speed;
 }
 private void Update()
 {
     if (target && targetVulnerable)
     {
         Vector3 direction = (target.transform.position - transform.position).normalized;
         projectileMovement.UpdateRotation(CS_Utils.PointToDegree(direction));
     }
 }
예제 #3
0
    void Update()
    {
        if (path != null)
        {
            if (targets.Count == 0)
            {
                return;
            }

            if (transform.position == targets[current])
            {
                current = CS_Utils.Mod(current + 1, targets.Count);
            }

            transform.position = Vector3.MoveTowards(transform.position, targets[current], Time.deltaTime * speed);
        }
    }
    void Update()
    {
        timer -= Time.deltaTime;
        if (timer <= 0)
        {
            CS_Projectile_Movement i = Instantiate(projectile, spawnLocation.position, spawnLocation.rotation, parent);
            i.angle = angle;
            if (rotateObject)
            {
                rotateObject.rotation = Quaternion.Euler(0.0f, 0.0f, angle - 90);
            }
            i.speed = projectileSpeed;
            timer   = spawnRate;

            angle = CS_Utils.Mod(angle + angleStep, 360);
        }
    }
예제 #5
0
    void Update()
    {
        float angle = CS_Utils.PointToDegree(target.position - rotateObject.position);

        if (rotateObject)
        {
            rotateObject.rotation = Quaternion.Euler(0.0f, 0.0f, angle + 90);
        }
        timer -= Time.deltaTime;
        if (timer <= 0)
        {
            CS_Projectile_Movement i = Instantiate(projectile, spawnLocation.position, spawnLocation.rotation, parent);
            i.angle = angle;
            i.speed = projectileSpeed;
            timer   = spawnRate;
        }
    }
    public override void SpecialCollision(Collision2D collision)
    {
        Rigidbody2D             rb = GetComponent <Rigidbody2D>();
        CS_Projectile_Collision pc = GetComponent <CS_Projectile_Collision>();

        float magnitude = rb.velocity.magnitude;
        float angle     = CS_Utils.PointToDegree(rb.velocity);

        CS_Projectile_Collision.Owner owner = pc.GetOwner();

        float   angle1    = (angle + 45);
        Vector2 velocity1 = CS_Utils.DegreeToPoint(angle1);

        CreateChild(velocity1, magnitude, owner);

        float   angle2    = (angle - 45);
        Vector2 velocity2 = CS_Utils.DegreeToPoint(angle2);

        CreateChild(velocity2, magnitude, owner);

        Destroy(gameObject);
    }
예제 #7
0
    void Update()
    {
        if (deathAnimation.enabled == true)
        {
            deathTimer -= Time.deltaTime;
            if (deathTimer <= 0)
            {
                Destroy(this.gameObject);
            }
        }
        else
        {
            float distans = Vector3.Distance(transform.position, player.transform.position);

            float angle = CS_Utils.PointToDegree(player.position - this.transform.position);
            this.transform.rotation = Quaternion.Euler(0.0f, 0.0f, angle);

            if (distans <= 20)
            {
                shotDelay -= Time.deltaTime;
                //spotted.Play();
                if (shotDelay <= 0)
                {
                    for (int index = 0; index < cannons.Length; index++)
                    {
                        cannonBall.transform.position = cannons[index].position;
                        GameObject  temp = Instantiate(cannonBall);
                        Rigidbody2D rb   = temp.GetComponent <Rigidbody2D>();
                        rb.velocity = (transform.right * cannonSpeed);
                        shotDelay   = 3;
                        Instantiate(cannonSmoke, cannons[index].transform.position, Quaternion.LookRotation(rightCannonAimPositions[index].transform.position - cannons[index].transform.position));
                    }
                }
            }
        }
    }
예제 #8
0
 private void OnCollisionExit2D(Collision2D collision)
 {
     UpdateRotation(CS_Utils.PointToDegree(rb.velocity.normalized));
 }
예제 #9
0
    void Update()
    {
        float angle = CS_Utils.PointToDegree(target.position - rotateObject.position);

        rotateObject.rotation = Quaternion.Euler(0.0f, 0.0f, angle + 90);
    }
예제 #10
0
    private IEnumerator UpdatePreviousAngle()
    {
        yield return(new WaitForEndOfFrame());

        previousAngle = CS_Utils.PointToDegree(rb.velocity);
    }