• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Crouch script
#3
Grazie mille, il tuo script mi è stato di grande aiuto... metto il mio script finale:

Codice:
using UnityEngine;
using System.Collections;

public class PlayerCrouching : MonoBehaviour {

    public float crouchHeight = 1.6F;
    public float crouchSpeed = 20.0F;
    public static float standUpHeight = 2.6F;

    public bool crouching = false;
    public bool showDisplay = false;

    public CharacterController controller;

    private Vector3 position;

    private float height;

    private bool cannotCrouch;

    void Awake ()
    {
        controller.height = standUpHeight;
    }

    void FixedUpdate ()
    {
        if (Input.GetButton ("Crouch"))
        {
            height = crouchHeight;
        }
        else if (!Input.GetButton ("Crouch") && cannotCrouch == false)
        {
            height = standUpHeight;
        }

        float lastHeight = controller.height;
        controller.height = Mathf.Lerp (controller.height, height, crouchSpeed * Time.deltaTime);

        position.x = controller.transform.position.x;
        position.z = controller.transform.position.z;
        position.y = controller.transform.position.y + (controller.height - lastHeight) / 2.0F;
        controller.transform.position = position;

        if (controller.height >= (standUpHeight - 0.05F))
        {
            crouching = false;
        }
        else
        {
            crouching = true;
        }
    }

    public void ConstrainCrouch ()
    {
        if (crouching == true)
        {
            cannotCrouch = true;
        }
        else
        {
            cannotCrouch = false;
        }
    }

    public void FreeCrouch ()
    {
        cannotCrouch = false;
    }
        
    void OnGUI()
    {
        if (showDisplay == true)
        {
            GUI.Box (new Rect (10, 80, 150, 45), "Player Height");
            GUI.Label (new Rect (20, 100, 150, 25), "Height " + controller.height);
        }
    }
}

Adesso il problema di prima è sparito, ma ce n'è un altro: quando l'altezza del personaggio diminuisce, ovviamente tutti i GameObject imparentati con lui si muoveranno. Purtroppo la MainCamera attaccata al personaggio si muoverà di meno rispetto al personaggio stesso, quindi ne risulterà che la MainCamera, mentre si è accovacciati, sarà al di sopra della testa. Quindi vorrei capire un modo per poter muovere la MainCamera in modo "uguale" rispetto al personaggio.
 
  


Messaggi in questa discussione
Crouch script - da 93sunderland - 07-04-2016, 08:06 AM
RE: Crouch script - da Blackg96 - 08-04-2016, 08:14 PM
RE: Crouch script - da 93sunderland - 09-04-2016, 09:44 AM
RE: Crouch script - da Blackg96 - 09-04-2016, 12:13 PM
RE: Crouch script - da 93sunderland - 09-04-2016, 02:15 PM
RE: Crouch script - da Blackg96 - 10-04-2016, 09:48 AM
RE: Crouch script - da 93sunderland - 10-04-2016, 12:13 PM
RE: Crouch script - da Blackg96 - 10-04-2016, 02:03 PM
RE: Crouch script - da 93sunderland - 10-04-2016, 02:37 PM
RE: Crouch script - da Blackg96 - 11-04-2016, 07:30 PM

Vai al forum:


Browsing: 1 Ospite(i)