コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        // Apply gravity
        velocity.y += gravity * Time.deltaTime;

        // Inflict damage
        if (enemyBullet)
        {
            if (controller.collidesWithPlayer() && controller.getHitObject())
            {
                Player p = controller.getHitObject().GetComponent <Player>();
                if (p && !p.IsDead())
                {
                    p.TakeDamage(damage);
                }
            }
        }
        else
        {
            if (controller.collidesWithEnemy() && controller.getHitObject())
            {
                Enemy e = controller.getHitObject().GetComponent <Enemy>();
                if (e && !e.IsDead())
                {
                    e.TakeDamage(damage);
                    if (attracts)
                    {
                        Destroy(gameObject);
                        e.GetController().Move(-(velocity * Time.deltaTime * 0.1f), false);
                    }
                    if (repels)
                    {
                        e.GetController().Move(velocity * Time.deltaTime * 0.1f, false);
                    }
                }
            }

            if (controller.collidesWithTrigger() && controller.getHitObject())
            {
                Switch s = controller.getHitObject().GetComponent <Switch>();
                if (s && !s.IsLevelExit())
                {
                    s.Press();
                }
            }
        }

        // Destroy on collision or if it's out of range
        if (controller.HasCollisions() || Mathf.Abs(transform.position.x - origin.x) > range || Mathf.Abs(transform.position.y - origin.y) > range)
        {
            Destroy(gameObject);
        }

        // Movement
        controller.Move(velocity * Time.deltaTime, dir);
        //controller.Move (dir * speed, false);
        //transform.position = new Vector3(transform.position.x + 0.04f * dir.x,transform.position.y + 0.04f * dir.y, transform.position.z);
    }