Esempio n. 1
0
    public GameObjectAutoMoveClass(GameObjectAutoMoveClass gameObjectAutoMoveClassCopy)
    {
        generalToJump = new General();
        generalToStep = new General();



        gameObj = gameObjectAutoMoveClassCopy.gameObj;

        Speed        = gameObjectAutoMoveClassCopy.Speed;
        StopDistance = gameObjectAutoMoveClassCopy.StopDistance;
        timeToStep   = gameObjectAutoMoveClassCopy.timeToStep;
        NoAutoMove   = gameObjectAutoMoveClassCopy.NoAutoMove;

        jump          = gameObjectAutoMoveClassCopy.jump;
        jumpForce     = gameObjectAutoMoveClassCopy.jumpForce;
        timeErrorJump = gameObjectAutoMoveClassCopy.timeErrorJump;

        rb = gameObjectAutoMoveClassCopy.rb;

        typeAutoMove = gameObjectAutoMoveClassCopy.typeAutoMove;


        if (timeErrorJump > 0f)
        {
            timeToJump += UnityEngine.Random.Range(-timeErrorJump * timeToJump, timeErrorJump * timeToJump);
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Создание движущихся объектов
    /// </summary>
    private void ControlMovableGameObjs()
    {
        if (moveableObjects.Count < currLevel.maxCountOfMovableObjs && currLevel.moveableObjs.Count > 0)
        {
            GameObjectAutoMove gobAM = currLevel.moveableObjs[Random.Range(0, currLevel.moveableObjs.Count)];

            GameObjectAutoMoveClass gobAMClass = new GameObjectAutoMoveClass(gobAM.gameObjectAutoMoveClass);

            GameObject gobj = CreateObjRndPOint(gobAMClass.gameObj, true);

            gobAMClass.rb = gobj.GetComponent <Rigidbody>();



            moveableObjects.Add(gobj, gobAMClass);
        }
    }
Esempio n. 3
0
    private void Moveobject(GameObject gobj, GameObjectAutoMoveClass gameObjectAutoMove)
    {
        if (gameObjectAutoMove.NoAutoMove == false)
        {
            Vector3 playerPosition = playerTransform.position;

            if (gameObjectAutoMove.typeAutoMove == GameObjectAutoMoveClass.TypeAutoMove.follow)
            {
                if (Vector3.Distance(gobj.transform.position, playerPosition) > gameObjectAutoMove.StopDistance)
                {
                    if (gameObjectAutoMove.generalToStep.GetTimeOut(gameObjectAutoMove.timeToStep, Time.fixedDeltaTime))
                    {
                        gobj.transform.LookAt(playerPosition, gobj.transform.up);
                    }
                    //Quaternion rotation = Quaternion.FromToRotation(-gobj.transform.up, transform.position - gobj.transform.position);
                    Quaternion rotation = Quaternion.FromToRotation(gobj.transform.up, gobj.transform.position.normalized);
                    gobj.transform.rotation = rotation * gobj.transform.rotation;



                    Vector3 down    = Vector3.Project(gameObjectAutoMove.rb.velocity, gobj.transform.up);
                    Vector3 forward = gobj.transform.forward * gameObjectAutoMove.Speed * Time.fixedDeltaTime;
                    if (gameObjectAutoMove.rb)
                    {
                        gameObjectAutoMove.rb.velocity = down + forward;
                    }
                }
                else
                {
                    gameObjectAutoMove.rb.angularVelocity -= gameObjectAutoMove.rb.angularVelocity;
                    gameObjectAutoMove.rb.velocity        -= gameObjectAutoMove.rb.velocity;
                }
            }
            else if (gameObjectAutoMove.typeAutoMove == GameObjectAutoMoveClass.TypeAutoMove.rnddir)
            {
                //Quaternion rotation = Quaternion.FromToRotation(-gobj.transform.up, transform.position - gobj.transform.position);
                Quaternion rotation = Quaternion.FromToRotation(gobj.transform.up, gobj.transform.position.normalized);
                gobj.transform.rotation = rotation * gobj.transform.rotation;

                if (gameObjectAutoMove.generalToStep.GetTimeOut(gameObjectAutoMove.timeToStep, Time.fixedDeltaTime))
                {
                    int rndQ = Random.Range(-1, 1);
                    if (rndQ == 0)
                    {
                        rndQ = 1;
                    }

                    Quaternion rotationAdd = Quaternion.FromToRotation(gobj.transform.forward, rndQ * gobj.transform.right);
                    gobj.transform.rotation = rotationAdd * gobj.transform.rotation;
                    //gobj.transform.Rotate(gobj.transform.up, rndQ * 90);
                }

                Vector3 down    = Vector3.Project(gameObjectAutoMove.rb.velocity, gobj.transform.up);
                Vector3 forward = gobj.transform.forward * gameObjectAutoMove.Speed * Time.fixedDeltaTime;
                if (gameObjectAutoMove.rb)
                {
                    gameObjectAutoMove.rb.velocity = down + forward;
                }
            }
            else if (gameObjectAutoMove.typeAutoMove == GameObjectAutoMoveClass.TypeAutoMove.nope)
            {
                //Quaternion rotation = Quaternion.FromToRotation(-gobj.transform.up, transform.position - gobj.transform.position);
                Quaternion rotation = Quaternion.FromToRotation(gobj.transform.up, gobj.transform.position.normalized);
                gobj.transform.rotation = rotation * gobj.transform.rotation;
            }

            if (gameObjectAutoMove.jump)
            {
                if (gameObjectAutoMove.generalToJump.GetTimeOut(gameObjectAutoMove.timeToJump, Time.fixedDeltaTime))
                {
                    if (gameObjectAutoMove.rb)
                    {
                        gameObjectAutoMove.rb.AddForce(gobj.transform.up * gameObjectAutoMove.jumpForce, ForceMode.VelocityChange);
                    }
                }
            }
        }
    }