protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var job1 = new ObjectMove()
        {
            dt = UnityEngine.Time.deltaTime
        };
        var handle1 = job1.Schedule(this, inputDeps);
        var job2    = new ObjectRotate()
        {
            dt = UnityEngine.Time.deltaTime
        };
        var handle2 = job2.Schedule(this, handle1);

        return(handle2);
    }
Exemplo n.º 2
0
 static void AddComp()
 {
     GameObject[] objSels = Selection.gameObjects;
     Debug.Log("objSels:" + objSels.Length);
     for (int i = 0; i < objSels.Length; ++i)
     {
         GameObject   objSelect = objSels[i];
         ObjectRotate info      = objSelect.GetComponent <ObjectRotate>();
         if (info == null)
         {
             info = objSelect.AddComponent <ObjectRotate>();
         }
         Debug.Log("objSelect:" + objSelect.name);
     }
 }
Exemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        ObjectRotate obj = (ObjectRotate)target;

        GUILayout.BeginHorizontal();
        obj.initialAngle = EditorGUILayout.FloatField("Initial Angle", obj.initialAngle);
        if (GUILayout.Button("Set"))
        {
            obj.initialAngle = obj.transform.rotation.eulerAngles.y;
        }
        GUILayout.EndHorizontal();

        GUILayout.Label("Event Angles");

        if (obj.eventAngles == null)
        {
            obj.eventAngles = new List <float>();
        }


        for (int i = 0; i < obj.eventAngles.Count; i++)
        {
            GUILayout.BeginHorizontal();
            obj.eventAngles[i] = EditorGUILayout.FloatField($"Angle {i}", obj.eventAngles[i]);
            if (GUILayout.Button("View"))
            {
                obj.RotateTo(obj.eventAngles[i]);
            }
            if (GUILayout.Button("Set"))
            {
                obj.eventAngles[i] = obj.transform.rotation.eulerAngles.y;
            }
            if (GUILayout.Button("X"))
            {
                obj.eventAngles.RemoveAt(i);
                break;
            }
            GUILayout.EndHorizontal();
        }

        if (GUILayout.Button("Add New Event Angle"))
        {
            obj.eventAngles.Add(obj.transform.rotation.eulerAngles.y);
        }
    }
Exemplo n.º 4
0
    void SetupBoard()
    {
        //Define setup
        BoardSizeX = 4000.0f;
        BoardSizeY = 4000.0f;

        MinAsteroidDistance = 600.0f;
        MaxAsteroidDistance = 800.0f;

        NumAsteroids = 500;
        PlanetZ      = 1.0f;

        //Store object references
        Earth = GameObject.Find("Earth");
        Mars  = GameObject.Find("Mars");
        Pluto = GameObject.Find("Pluto");

        //GENERATE OBJECTS
        //Asteroids
        float r     = 0.0f;
        float angle = 0.0f;
        float scale = 0.0f;

        foreach (int i in Enumerable.Range(0, NumAsteroids))
        {
            r     = Random.Range(MinAsteroidDistance, MaxAsteroidDistance);
            angle = Random.Range(0, 360);
            scale = Random.Range(2.0f, 5.0f);
            int        type = (int)(Random.Range(0, 6.0f));
            GameObject newAsteroid;
            switch (type)
            {
            case 0:
                newAsteroid = Instantiate(Asteroid);
                break;

            case 1:
                newAsteroid = Instantiate(Asteroid1);
                break;

            case 2:
                newAsteroid = Instantiate(Asteroid2);
                break;

            case 3:
                newAsteroid = Instantiate(Asteroid3);
                break;

            case 4:
                newAsteroid = Instantiate(Asteroid4);
                break;

            case 5:
                newAsteroid = Instantiate(Asteroid5);
                break;

            default:
                newAsteroid = Instantiate(Asteroid);
                break;
            }


            newAsteroid.transform.localScale = new Vector3(scale, scale, 1.0f);
            ObjectRotate rotateScript = newAsteroid.GetComponent <ObjectRotate>();
            rotateScript.OrbitRadius   = r;
            rotateScript.OrbitalPeriod = 10000.0f + r * 5.0f;
            rotateScript.AngleDegs     = angle;
            rotateScript.SpinRate      = Random.Range(-0.5f, 0.5f);
            AsteroidBelt.Add(newAsteroid);
        }
    }
Exemplo n.º 5
0
 // Start is called before the first frame update
 void Start()
 {
     objectRotate = GetComponentInParent <ObjectRotate>();
     audioSource  = GetComponent <AudioSource>();
 }
    // 원형 판정 탄막 발사 함수 (스프라이트 회전 X)
    public void CircleBulletFire
        (GameObject obj, int bulletNumber, int bulletLayer, Vector2 bulletFirePosition, Vector3 bulletScale,
        Transform bulletParent, float circleColliderRadius, float circleColliderOffsetX, float circleColliderOffsetY, float spriteAlpha, int spriteNumber, bool isAnimation, int animatorNumber,
        BulletType bulletType, GameObject targetObject, BulletSpeedState bulletSpeedState, float bulletMoveSpeed,
        float bulletAccelerationMoveSpeed, float bulletAccelerationMoveSpeedMax, float bulletDecelerationMoveSpeed, float bulletDecelerationMoveSpeedMin, bool bulletMoveSpeedLoopBool, bool bulletMoveSpeedLoopOnceBool,
        BulletRotateState bulletRotateState, float bulletRotateSpeed, float bulletRotateLimit,
        int bulletDestinationType, Vector2 targetPosition, float addRotateAngle, int customPatternNumber = 0, bool isSpriteRotate = false,
        float spriteRotateSpeed = 0.0f, bool isGravity = false, float velocity = 0.0f, float gravityScale = 0.0f, bool isLookAt = false)
    {
        obj.SetActive(true);
        // ClearChild(obj);
        BulletState      bulletState      = obj.GetComponent <BulletState>();
        BulletMove       bulletMove       = obj.GetComponent <BulletMove>();
        ObjectRotate     objectRotate     = obj.GetComponent <ObjectRotate>();
        CircleCollider2D circleCollider2D = obj.GetComponent <CircleCollider2D>();
        SpriteRenderer   spriteRenderer   = obj.GetComponent <SpriteRenderer>();
        Animator         animator         = obj.GetComponent <Animator>();
        Rigidbody2D      rigidbody2D      = obj.GetComponent <Rigidbody2D>();

        bulletState.bulletObject = obj;
        bulletState.bulletNumber = bulletNumber;
        obj.gameObject.layer     = bulletLayer;
        obj.transform.position   = bulletFirePosition;
        obj.transform.localScale = bulletScale;
        obj.transform.SetParent(bulletParent);
        circleCollider2D.radius = circleColliderRadius;
        circleCollider2D.offset = new Vector2(circleColliderOffsetX, circleColliderOffsetY);
        spriteRenderer.color    = new Color(1.0f, 1.0f, 1.0f, spriteAlpha);
        spriteRenderer.sprite   = gameManager.bulletSprite[spriteNumber];
        if (isAnimation.Equals(true))
        {
            animator.runtimeAnimatorController = gameManager.bulletAnimatorController[animatorNumber];
        }
        else
        {
            animator.runtimeAnimatorController = null;
        }
        bulletState.bulletType                     = bulletType;
        bulletState.targetObject                   = targetObject;
        bulletState.isGrazed                       = false;
        bulletState.bulletSpeedState               = bulletSpeedState;
        bulletState.bulletMoveSpeed                = bulletMoveSpeed;
        bulletState.bulletAccelerationMoveSpeed    = bulletAccelerationMoveSpeed;
        bulletState.bulletAccelerationMoveSpeedMax = bulletAccelerationMoveSpeedMax;
        bulletState.bulletDecelerationMoveSpeed    = bulletDecelerationMoveSpeed;
        bulletState.bulletDecelerationMoveSpeedMin = bulletDecelerationMoveSpeedMin;
        bulletState.bulletMoveSpeedLoopBool        = bulletMoveSpeedLoopBool;
        bulletState.bulletMoveSpeedLoopOnceBool    = bulletMoveSpeedLoopOnceBool;
        bulletState.bulletRotateState              = bulletRotateState;
        bulletState.bulletRotateSpeed              = bulletRotateSpeed;
        bulletState.bulletRotateLimit              = bulletRotateLimit;
        switch (bulletDestinationType)
        {
        case 1:
            bulletState.bulletDestination = bulletState.GetBulletDestination(targetPosition);
            break;

        case 2:
            bulletState.bulletDestination = bulletState.GetRandomAimedBulletDestination();
            break;

        case 3:
            bulletState.bulletDestination = bulletState.GetAimedBulletDestination();
            break;

        default:
            bulletState.bulletDestination = bulletState.GetBulletDestination(new Vector2(obj.transform.position.x, obj.transform.position.y - 5.0f));
            break;
        }
        float angle = Mathf.Atan2(bulletState.bulletDestination.y, bulletState.bulletDestination.x) * Mathf.Rad2Deg;

        bulletMove.ChangeRotateAngle(angle - 90.0f + addRotateAngle);

        if (isSpriteRotate.Equals(true))
        {
            objectRotate.rotateSpeed = spriteRotateSpeed;
        }
        if (isGravity.Equals(true))
        {
            // rigidbody2D.AddForce(bullet.transform.position * velocity);
            rigidbody2D.AddForce(bulletState.bulletDestination.normalized * velocity);
            rigidbody2D.gravityScale = gravityScale;
            bulletState.isLookAt     = isLookAt;
        }

        // 커스텀 패턴 스크립트 넣기 (제작하는 대로 넣을 것)
        switch (customPatternNumber)
        {
        case 1:
            obj.AddComponent <BulletReaiming>();
            break;

        default:
            break;
        }
    }
Exemplo n.º 7
0
    public IEnumerator FragmentationAttack1(Vector2 bulletFirePosition)
    {
        int spriteIndex = 0;

        for (int i = 0; i < 3; i++)
        {
            spriteIndex++;

            // 충돌체 생성
            if (bulletManager.bulletPool.Count > 0)
            {
                GameObject bullet = bulletManager.bulletPool.Dequeue();
                bullet.SetActive(true);
                EnemyFire.ClearChild(bullet);
                bullet.transform.position = bulletFirePosition;
                bullet.gameObject.tag     = "BULLET_ENEMY";
                bullet.gameObject.layer   = LayerMask.NameToLayer("BULLET_ENEMY_DESTROYZONE_INNER2");
                bullet.transform.SetParent(enemyFire.enemyBulletTemp2);
                if (!bullet.GetComponent <CircleCollider2D>())
                {
                    bullet.AddComponent <CircleCollider2D>();
                }
                if (!bullet.GetComponent <InitializeBullet>())
                {
                    bullet.AddComponent <InitializeBullet>();
                }
                if (!bullet.GetComponent <MovingBullet>())
                {
                    bullet.AddComponent <MovingBullet>();
                }
                if (!bullet.GetComponent <EraseBullet>())
                {
                    bullet.AddComponent <EraseBullet>();
                }
                if (!bullet.GetComponent <SpriteRenderer>())
                {
                    bullet.AddComponent <SpriteRenderer>();
                }
                if (!bullet.GetComponent <ObjectRotate>())
                {
                    bullet.AddComponent <ObjectRotate>();
                }
                SpriteRenderer   spriteRenderer   = bullet.GetComponent <SpriteRenderer>();
                CircleCollider2D circleCollider2D = bullet.GetComponent <CircleCollider2D>();
                InitializeBullet initializeBullet = bullet.GetComponent <InitializeBullet>();
                MovingBullet     movingBullet     = bullet.GetComponent <MovingBullet>();
                ObjectRotate     objectRotate     = bullet.GetComponent <ObjectRotate>();
                Rigidbody2D      rigidbody2D      = bullet.GetComponent <Rigidbody2D>();
                spriteRenderer.sprite          = enemyFire.spriteCollection[203 + ((spriteIndex % 3) * 2)];
                spriteRenderer.sortingOrder    = 3;
                circleCollider2D.isTrigger     = true;
                circleCollider2D.radius        = 0.015f;
                circleCollider2D.enabled       = false;
                initializeBullet.bulletType    = BulletType.BULLETTYPE_NORMAL;
                initializeBullet.bulletObject  = bullet.gameObject;
                initializeBullet.targetObject  = playerObject;
                initializeBullet.isGrazed      = false;
                movingBullet.bulletMoveSpeed   = 0.0f;
                movingBullet.bulletSpeedState  = BulletSpeedState.BULLETSPEEDSTATE_NORMAL;
                movingBullet.bulletRotateState = BulletRotateState.BULLETROTATESTATE_NONE;
                movingBullet.bulletDestination = initializeBullet.GetRandomAimedBulletDestination();
                float angle = Mathf.Atan2(movingBullet.bulletDestination.y, movingBullet.bulletDestination.x) * Mathf.Rad2Deg;
                movingBullet.ChangeRotateAngle(angle - 90.0f + Random.Range(-40.0f, 40.0f));
                objectRotate.rotateSpeed = 120.0f;
                rigidbody2D.velocity     = movingBullet.bulletDestination.normalized * Random.Range(1.0f, 2.5f);
                rigidbody2D.gravityScale = 0.2f;
            }
            else
            {
                enemyFire.AddBulletPool();
            }
        }

        yield return(null);
    }