Ejemplo n.º 1
0
    //Methode die vom Spielercharackter aufgreufen wird wenn er eine Waffe aufnimmt
    public void DrawWeapon(Transform weapon)
    {
        if (!weapon || GameObject.ReferenceEquals(this.weapon, weapon))
        {
            return;
        }

        // Aktuelle Waffe löschen
        DropWeapon();

        // Waffe aufheben
        this.weapon = weapon;                                                                   // Referenz auf neue Waffe

        // Waffenposition nicht mehr über das Netzwerk senden
        Network_SendTransform network = this.weapon.GetComponent <Network_SendTransform>();

        network.Mode = PropMode.inactive;

        this.weapon.SetParent(transform);                               // Waffe an den Waffenanker hängen
        this.weapon.localPosition = new Vector3();                      // Am Anker positionieren
        this.weapon.localRotation = Quaternion.identity;                // Am Anker rotieren

        // Schießenskript mitteilen mit welcher Waffe geschossen wird
        fireing.MyWeapon = this.weapon.GetComponent <Weapon>();

        // ---------------------- Netzwerkschnittstelle ----------------------
        Netzwerk_Simulator.Senden(1, PlayerInfo.PlayerID, PackageType.pickedUp, network.ObjectID.ToString());
        // -------------------------------------------------------------------
    }
Ejemplo n.º 2
0
    void FixedUpdate()
    {
        // Positionsdaten senden wenn das Objekt im Aktiv-Status ist
        if (status == PropStatus.active)
        {
            // ------------------ Simulierte Netzwerkschnittstelle ------------------
            // Position senden
            Netzwerk_Simulator.Senden(game, objectID, PackageType.Position, (transform.position.x - posOffset.x) + ","
                                      + (transform.position.y - posOffset.y) + "," + (transform.position.z - posOffset.z));
            // Ausrichtung senden
            Netzwerk_Simulator.Senden(game, objectID, PackageType.Rotation, transform.rotation.x + ","
                                      + transform.rotation.y + "," + transform.rotation.z + "," + transform.rotation.w);
            // ----------------------------------------------------------------------
        }

        // Überprüfen ob sich das Objekt bewegt hat
        if (Mathf.Abs((transform.position - lastPosition).magnitude) > triggerActiveState ||
            Mathf.Abs((transform.rotation.eulerAngles - lastRotation).magnitude) > triggerActiveState)
        {
            // Den Status auf Aktiv setzen, wenn das Objekt nicht vom Netzwerk bewegt wird
            if (status == PropStatus.inactive)
            {
                Status = PropStatus.active;
            }
        }
        // Den Status auf Inaktiv setzen, wenn das Objekt sich nicht mehr bewegt
        else
        {
            Status = PropStatus.inactive;
        }

        // Letzte synchronisierte Position merken.
        // Damit wird im nächsten Durchgang überprüft ob sich das Objekt bewegt hat.
        if (status != PropStatus.inactive)
        {
            lastPosition = transform.position;
            lastRotation = transform.rotation.eulerAngles;
        }
    }
Ejemplo n.º 3
0
    void Update()
    {
        // Input registrieren
        inp_horizontal = Input.GetAxisRaw("Horizontal");
        inp_vertical   = Input.GetAxisRaw("Vertical");

        // Springen Event
        if (Input.GetButtonDown("Jump") && On_Inp_Jump != null)
        {
            On_Inp_Jump();
        }

        // Ducken Event
        if (On_Inp_Crouch != null)
        {
            // Ducken gedrückt halten oder toggeln
            if (crouchToggle)
            {
                // Ducken toggeln
                if (Input.GetButtonDown("Crouch"))
                {
                    if (isCrouchingInp)
                    {
                        On_Inp_Crouch(false);
                        isCrouchingInp = false;
                    }
                    else
                    {
                        On_Inp_Crouch(true);
                        isCrouchingInp = true;
                    }
                }
            }
            else
            {
                // Ducken gedrückt halten
                if (Input.GetButtonDown("Crouch"))
                {
                    isCrouchingInp = true;
                    On_Inp_Crouch(true);
                }
                else if (Input.GetButtonUp("Crouch"))
                {
                    isCrouchingInp = false;
                    On_Inp_Crouch(false);
                }
            }
        }

        // ------------------ Simulierte Netzwerkschnittstelle ------------------
        // Position senden
        Netzwerk_Simulator.Senden(playerID, -1, PackageType.Position, transform.position.x + "," + transform.position.y + "," + transform.position.z);

        // Geschwindigkeit (für den Animator) senden
        Vector3 hilf = transform.worldToLocalMatrix * phy.velocity;

        Netzwerk_Simulator.Senden(playerID, -1, PackageType.Velocity, hilf.x + "," + hilf.y + "," + hilf.z);

        // Ausrichtung senden
        Netzwerk_Simulator.Senden(playerID, -1, PackageType.Rotation, transform.rotation.x + "," + transform.rotation.y + "," + transform.rotation.z + "," + transform.rotation.w);

        // Granatenwurf senden
        if (Input.GetButtonDown("Fire1"))
        {
            Netzwerk_Simulator.Senden(playerID, -1, PackageType.Granade, "");
        }
        // ----------------------------------------------------------------------
    }