Esempio n. 1
0
 // Agent 클래스가 처음 실행될 때 실행 //생명주기 Awake() -> OnEnabled() -> Initialize() -> start() -> OnEpisodeBegin()
 public override void Initialize()
 {
     _droneController = GetComponent <DroneMovement>();
     _sensor          = GetComponent <DroneSensors>();
     _initPosition    = transform.position;
     _rigidbody       = GetComponent <Rigidbody>();
 }
Esempio n. 2
0
        public SDrone(DroneData data, Drone drone)
        {
            count = DroneData.Count;
            uid   = data.UID;
            totalDeliveryCount = data.DeliveryCount;
            totalBatterySwaps  = data.batterySwaps;
            totalHubHandovers  = data.hubsAssigned;
            collisionOn        = data.collisionOn;
            isWaiting          = data.isWaiting;
            inHub                  = data.inHub;
            movement               = data.movement;
            status                 = data.state;
            totalDelay             = data.totalDelay;
            totalAudibleDuration   = data.audibleDuration;
            totalPackageWeight     = data.packageWeight;
            totalDistanceTravelled = data.distanceTravelled;
            totalEnergy            = data.totalEnergy;
            targetAltitude         = data.targetAltitude;
            waypointsQueue         = new List <SVector3>();
            completedJobs          = new List <uint>(data.completedJobs.Keys);
            maxSpeed               = data.MaxSpeed;
            position               = drone.transform.position;
            previousWaypoint       = data.previousWaypoint;
            waypoint               = data.currentWaypoint;
            job     = data.job;
            hub     = data.hub;
            battery = data.battery;
            charge  = drone.GetBattery().Charge;

            foreach (var point in data.waypoints)
            {
                waypointsQueue.Add(point);
            }
        }
 void Start()
 {
     rb           = GetComponent <Rigidbody>();
     dm           = GetComponent <DroneMovement>();
     animator     = GetComponent <Animator>();
     meshCollider = GetComponent <MeshCollider>();
     //laserGroup = transform.GetChild(3).GetChild(0).gameObject;
 }
Esempio n. 4
0
    // Start is called before the first frame update
    void Start()
    {
        // This returns the GameObject
        rotors = GameObject.FindGameObjectsWithTag("Rotor");

        drone         = GameObject.FindWithTag("Player");
        droneMovement = drone.GetComponent <DroneMovement>();
    }
Esempio n. 5
0
    private void Awake()
    {
        monitor_game  = GameObject.FindWithTag("MonitorGame").GetComponent <MonitorGame>();
        droneMovement = GetComponent <DroneMovement>();
        currentHealth = startingHealth;
        GameObject gameovercontroller = GameObject.FindWithTag("GameOverController");

        createMenu = gameovercontroller.GetComponent <CreateMenu>();
    }
Esempio n. 6
0
    // Use this for initialization
    void Start()
    {
        rotor = transform.Find("rotor");
        if (rotor != null)
        {
            cam = rotor.Find("cam");
        }

        drone          = GetComponent <DroneMovement>();
        camera         = cam.GetComponentInChildren <Camera>();
        camera.enabled = false;
    }
 public void createDrone(GameObject d)
 {
     Drone = d;
     Drone.transform.parent   = gameObject.transform;
     Drone.transform.position = Miner.transform.position;
     droneMovement            = Drone.GetComponent <DroneMovement>();
     droneMovement.setColor(Miner.GetComponent <Renderer>().material.color);
     Drone.GetComponent <DroneHealth>().playerInstance = gameObject;
     if (!photonView.IsMine)
     {
         droneMovement.DroneCamera.SetActive(false);
     }
 }
    /// <summary>
    /// Will traverse through the parents of this collider and try to find the drone script
    /// so we don't have to do it our selves
    /// </summary>
    void FindingMyDroneComponent()
    {
        Transform currentTransform = transform;

        for (int i = 0; i < 20; i++)
        {
            if (!currentTransform.parent.GetComponent <DroneMovement>())
            {
                currentTransform = currentTransform.parent;
            }
            else
            {
                drone = currentTransform.parent.GetComponent <DroneMovement>();
                FindMyProppeler();
            }
        }
    }
Esempio n. 9
0
    public IEnumerator viewChangeEffCoroutine; // 시점 전환 효과 코루틴

    #endregion


    private void Awake()
    {
        instance = this;

        status = PlayerStatus.Control;

        dm       = drone.GetComponent <DroneMovement>();
        rb       = GetComponent <Rigidbody>();
        animator = GetComponent <Animator>();

        #region init Variable

        dm.joystick_turned_on = InputDeviceChecker.instance.GetCurDevice() == InputDeviceChecker.INPUT_DEVICE.Joystick ? true : false;
        curViewPoint          = 1;

        #endregion
    }
Esempio n. 10
0
    public MissionExecution(CameraDefinition cameraDefinition, SurveyArea surveyArea, Georeferencing georeferencing, Mission mission, Transform droneTransform, float flightSpeed, string folderPath)
    {
        // Calculate the flight plan
        FlightPlan flightPlan = mission.CalculateFlightPlan();

        Debug.Log(string.Format("Mission calculated. Will take {0} images.", flightPlan.waypoints.Count));

        // Build helpers that will move the drone, take the images, and log everything to later geotag the images
        droneMovement     = new DroneMovement(droneTransform, flightPlan, flightSpeed);
        waypointProcessor = new WaypointProcessor(cameraDefinition, surveyArea, georeferencing, flightPlan.waypoints.Count, folderPath);

        // Save all configuration as XML
        SaveXML(cameraDefinition, surveyArea, flightPlan, georeferencing, folderPath);

        // Add event listeners
        droneMovement.OnReachedWaypoint           += ReachedWaypoint;
        waypointProcessor.OnProcessedAllWaypoints += () => OnMissionFinished?.Invoke();
    }
Esempio n. 11
0
        public StrippedDrone(DroneData data, Drone drone)
        {
            uid              = data.UID;
            isWaiting        = data.isWaiting;
            inHub            = data.inHub;
            movement         = data.movement;
            status           = data.state;
            targetAltitude   = data.targetAltitude;
            waypointsQueue   = new List <SVector3>();
            maxSpeed         = data.MaxSpeed;
            position         = drone.transform.position;
            previousWaypoint = data.previousWaypoint;
            waypoint         = data.currentWaypoint;
            job              = data.job;
            hub              = data.hub;
            battery          = data.battery;
            charge           = drone.GetBattery().Charge;

            foreach (var point in data.waypoints)
            {
                waypointsQueue.Add(point);
            }
        }
Esempio n. 12
0
 private void Start()
 {
     Cursor.lockState = CursorLockMode.Locked;
     droneMovement    = drone.GetComponent <DroneMovement>();
 }
 // Use this for initialization
 void Start()
 {
     droneScript = drone.GetComponent <DroneMovement>();
 }
Esempio n. 14
0
 // Start is called before the first frame update
 void Start()
 {
     drone          = GetComponent <DroneMovement>();
     numOfBatteries = drone.healthMax;
 }
Esempio n. 15
0
            public virtual void Awake()
            {
                droneMovementScript = GetComponent <DroneMovement>();

                //LocateWintipParticles();//used to determine how many particles on propelers do we have?...
            }
 public virtual void Awake()
 {
     droneMovement = GetComponent <DroneMovement>();
 }
Esempio n. 17
0
 void Start()
 {
     camera      = GetComponent <Transform>();
     droneScript = drone.GetComponent <DroneMovement>();
 }
Esempio n. 18
0
    IEnumerator RecallDrone()
    {
        // 잠시 대기하며 기울어진 드론 기체 회복
        DroneMovement DM = PlayerController.instance.drone.GetComponent <DroneMovement>();

        DM.DirectDroneRecoverMoment();

        // 드론이 도착할 지점을 바라본다(y축 회전)
        Vector3 targetPos = dronePos.transform.position;

        lookTarget.transform.LookAt(targetPos);
        transform.eulerAngles = new Vector3(transform.eulerAngles.x, lookTarget.transform.eulerAngles.y, transform.eulerAngles.z);

        DM.SetStartingRotation(); // ??? 필요?

        Debug.DrawLine(transform.position, dronePos.transform.position, Color.blue);

        //// 상승
        //DM.CallMovementUpDown(true, 0.5f);

        float speed = 10.0f;

        // 드론 -> 목표 방향으로 바닥과 수평이 되도록 ray 발사.
        Vector3 start = transform.position, end = dronePos.transform.position;

        start.y = 0; end.y = 0;
        while (Physics.Raycast(
                   transform.position + new Vector3(0, -1, 0),
                   //dronePos.transform.position - transform.position
                   end - start
                   , out hit, Vector3.Distance(transform.position, dronePos.transform.position))
               ||
               transform.position.y < dronePos.transform.position.y
               )
        {
            if (!enabled)
            {
                StopCoroutine(coroutine);
            }

            gameObject.transform.Translate(Vector3.up * speed * Time.deltaTime);

            yield return(null);
        }

        lookTarget.transform.LookAt(targetPos);
        transform.eulerAngles = new Vector3(transform.eulerAngles.x, lookTarget.transform.eulerAngles.y, transform.eulerAngles.z);

        DM.SetStartingRotation();

        float leftDistance = Vector3.Distance(transform.position,
                                              new Vector3(targetPos.x, transform.position.y, targetPos.z)
                                              );

        // 드론이 도착 지점을 찾지 못해 지나쳐서
        // 남은 거리가 다시 멀어지는 경우를 체크하기 위한 변수
        float rightBeforeLeftDist = float.MaxValue;

        while (leftDistance > 2f && rightBeforeLeftDist >= leftDistance)
        {
            rightBeforeLeftDist = leftDistance;

            // 남은 거리 계산
            leftDistance = Vector3.Distance(transform.position,
                                            new Vector3(targetPos.x, transform.position.y, targetPos.z)
                                            );


            gameObject.transform.Translate(Vector3.forward * speed * Time.deltaTime);


            yield return(null);
        }


        // 정확한 타겟의 상단으로 위치 고정
        //gameObject.transform.position = new Vector3(targetPos.x, transform.position.y, targetPos.z);

        DM.SetStartingRotation(); //



        // 하강

        leftDistance = Vector3.Distance(transform.position, targetPos);

        while (transform.position.y > targetPos.y + 3)
        {
            gameObject.transform.Translate(Vector3.down * speed * Time.deltaTime);

            yield return(null);
        }

        DM.SetStartingRotation(); // ??? 필요?


        coroutineFlag = false;
        followFlag    = true;
    }
Esempio n. 19
0
 // Start is called before the first frame update
 void Awake()
 {
     droneMovement = GetComponent <DroneMovement>();
     attachObjects = GetComponentInChildren <AttachObjects>();
 }
Esempio n. 20
0
    public void Stunned(float randomizer, float duration, float damage, GameObject effect)
    {
        if (!resistStun)
        {
            if (GetComponent <DroneAttack>() != null)
            {
                DroneMovement move = GetComponent <DroneMovement>();
                move.hoverForce           += Random.Range(-randomizer, randomizer);
                move.hoverHeight          += Random.Range(-randomizer, randomizer);
                move.speed                += Random.Range(-randomizer, randomizer);
                move.speed                += Random.Range(-randomizer, randomizer);
                move.acceleration         += Random.Range(-randomizer, randomizer);
                move.retreat_acceleration += Random.Range(-randomizer, randomizer);

                move.hover = false;

                GetComponent <DroneAttack>().enabled   = false;
                GetComponent <DroneAttack>().aimSpeed += Random.Range(-randomizer, randomizer);
            }

            if (GetComponent <Drone2Attack>() != null)
            {
                DroneMovement move = GetComponent <DroneMovement>();
                move.hoverForce           += Random.Range(-randomizer, randomizer);
                move.hoverHeight          += Random.Range(-randomizer, randomizer);
                move.speed                += Random.Range(-randomizer, randomizer);
                move.speed                += Random.Range(-randomizer, randomizer);
                move.acceleration         += Random.Range(-randomizer, randomizer);
                move.retreat_acceleration += Random.Range(-randomizer, randomizer);

                move.hover = false;

                GetComponent <Drone2Attack>().enabled = false;
            }

            if (GetComponent <EnemyMovement>() != null)
            {
                EnemyMovement move = GetComponent <EnemyMovement>();

                //Debug.Log("ZAAAP");
                move.active = false;
                move.move   = false;
                rb          = GetComponent <Rigidbody2D>();
                rb.velocity = new Vector2(0, rb.velocity.y);

                GetComponent <Enemy1_Attack>().enabled = false;
                GetComponent <Enemy1_Animation>().Move(false);
            }

            if (type == "LandMine")
            {
                GetComponent <LandMine>().explode = true;
            }

            if (type == "Turret")
            {
                GetComponent <Turret1>().enabled = false;
            }

            if (stunDuration <= 0)
            {
                stun_effect = Instantiate(effect, transform);
                stun_effect.transform.parent        = transform;
                stun_effect.transform.localPosition = new Vector2(0, 0);
            }
            if (duration > stunDuration)
            {
                stunDuration = duration;
            }
            if (damage > stunDamage)
            {
                stunDamage = damage;
            }
        }
    }
Esempio n. 21
0
    // Update is called once per frame
    void Update()
    {
        if (health <= 0 && alive)
        {
            alive = false;
            Die();
            health = 0;
        }

        //Burn effect
        if (burnDuration > 0)
        {
            TakeDamage(burnDamage * Time.deltaTime * (1 - burnResistance), true);
            burnDuration -= Time.deltaTime;
        }
        else
        {
            if (burn_effect != null)
            {
                Destroy(burn_effect);
            }
            burnDuration = 0;
            burnDamage   = 0;
        }

        //Stun effect
        if (stunDuration > 0)
        {
            TakeDamage(stunDamage * Time.deltaTime * (1 - stunResistance), true);
            stunDuration -= Time.deltaTime;
        }
        else
        {
            if (GetComponent <DroneAttack>() != null)
            {
                DroneMovement move = GetComponent <DroneMovement>();
                move.hover = true;

                GetComponent <DroneAttack>().enabled = true;
            }

            if (GetComponent <Drone2Attack>() != null)
            {
                DroneMovement move = GetComponent <DroneMovement>();
                move.hover = true;

                GetComponent <Drone2Attack>().enabled = true;
            }

            if (GetComponent <EnemyMovement>() != null)
            {
                EnemyMovement move = GetComponent <EnemyMovement>();

                move.active = true;
                move.move   = true;

                GetComponent <Enemy1_Attack>().enabled = true;
            }
            if (type == "Turret")
            {
                GetComponent <Turret1>().enabled = true;
            }

            if (stun_effect != null)
            {
                Destroy(stun_effect);
            }
            stunDamage   = 0;
            stunDuration = 0;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (!photonView.IsMine)
        {
            return;
        }

        if (Input.GetKeyDown("q"))
        {
            pressed = true;
        }

        if (pressed && Input.GetKey("q"))
        {
            float castTime = 0f;
            if (firstDroneActivate)
            {
                //spawning drone
                castTime = 0.75f;
            }
            else if (PlayerCamera.activeInHierarchy)
            {
                //returning to spawned drone
                castTime = 0.5f;
            }
            else
            {
                //returning to player
                castTime = 0.25f;
            }

            droneCastTime += Time.deltaTime;

            if (droneCastTime > castTime)
            {
                pressed         = false;
                droneCastTime   = 0f;
                activateScripts = !activateScripts;
                if (firstDroneActivate)
                {
                    firstDroneActivate = false;
                    if (photonView.IsMine)
                    {
                        object[] data = new object[1];
                        data[0]       = photonView.ViewID;
                        Drone         = PhotonNetwork.Instantiate("DroneCamera", gameObject.transform.position, gameObject.transform.rotation, 0, data);
                        droneMovement = Drone.GetComponent <DroneMovement>();
                        droneMovement.setColor(Miner.GetComponent <Renderer>().material.color);
                    }

                    //photonView.RPC("createDrone", RpcTarget.All);

                    //Drone.transform.position = new Vector3(Miner.transform.position.x, Miner.transform.position.y + 0.5f, Miner.transform.position.z);
                    activateScripts = false;
                }

                checkScripts = true;
            }
        }
        else if (droneCastTime > 0)
        {
            droneCastTime = 0f;
        }

        if (checkScripts)
        {
            checkScripts = false;
            if (activateScripts)
            {
                PlayerCamera.SetActive(true);
                Miner.GetComponent <CustomMovementTest>().playerControl = true;
                onClickPlayer.enabled  = true;
                shootReflector.enabled = true;
                droneMovement.drone_deactivate();
            }
            else
            {
                PlayerCamera.SetActive(false);
                Miner.GetComponent <CustomMovementTest>().playerControl = false;
                onClickPlayer.enabled  = false;
                shootReflector.enabled = false;
                droneMovement.drone_activate();
            }
        }

        //bad code but it'll work
        if (Miner)
        {
            if (PlayerCamera.activeInHierarchy)
            {
                GameManager.instance.changeCrosshairUI(false);
                GameManager.instance.changePlayerHealthUI(Miner.GetComponent <PlayerHealth>());
            }
            else
            {
                GameManager.instance.changeCrosshairUI(true);
                GameManager.instance.changeDroneHealthUI(Drone.GetComponent <DroneHealth>());
            }
        }
    }
 private void Start()
 {
     drone       = GetComponent <DroneMovement>();
     soundVolume = FindObjectOfType <MainMenu>().soundsValue;
 }