コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        switch (states)
        {
        case States.idle:
        {
            transform.position = Vector2.MoveTowards(transform.position, dir, Time.deltaTime * speed);

            break;
        }

        case States.fight:
        {
            Vector3 lookDir = player.position - enemyGun.transform.position;
            float   angle   = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
            if (angle < -180 || angle > 0)
            {
                gunSprite.transform.localEulerAngles = new Vector3(0, 180, 90);
                sprite.flipX = false;
            }
            else
            {
                sprite.flipX = true;
                gunSprite.transform.localEulerAngles = new Vector3(0, 0, 90);
            }
            enemyGun.transform.rotation = Quaternion.Lerp(enemyGun.transform.rotation, Quaternion.Euler(Vector3.forward * angle), Time.deltaTime * lerpSpeed);
            enemyGun.CheckCooldown();
            break;
        }
        }
    }
コード例 #2
0
    private IEnumerator Minigun()
    {
        gun.enabled = true;
        while (timer < 7.5f)
        {
            gun.CheckCooldown();

            timer += Time.deltaTime;
            toLerp = Color.Lerp(toLerp, Color.red, Time.deltaTime * 0.2f);

            Vector3 lookDir = player.position - gun.transform.position;
            float   angle   = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;

            gun.transform.rotation = Quaternion.Lerp(gun.transform.rotation, Quaternion.Euler(Vector3.forward * angle), Time.deltaTime * gunLerpSpeed);
            yield return(null);
        }
        temp_gameObject = Instantiate(smoke, gun.transform.position - Vector3.forward * 3, Quaternion.identity);
        gun.enabled     = false;
        phase           = Phase.GoCrazy;
        timer           = 0;
        StartCoroutine(Tired());
    }