09-04-2016, 09:44 AM
Grazie mille, il tuo script mi è stato di grande aiuto... metto il mio script finale:
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.
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.