07-04-2016, 08:06 AM
Ho provato a creare uno script per permettere l'abbassamento del player, cioè il crouching, e questo script l'ho allegato al mio CharacterController.
Lo script funziona, però crea dei movimenti un po' rozzi: praticamente quando premo il tasto "Crouch" il CharacterController diminuisce la propria dimensione, tuttavia nel momento di ritornare alla dimensione di partenza, ovvero in piedi, si fa sentire l'effetto delle gravità e quindi il ridimensionamento avviene vibrando. E' un po' brutto da vedere quindi vorrei sapere se qualcuno sa come risolvere questo inconveniente.
Codice:
using UnityEngine;
using System.Collections;
public class PlayerCrouching : MonoBehaviour {
public float crouchHeight = 0.75F;
public float crouchSlowness = 0.75F;
private Vector3 standUpPosition;
private Vector3 crouchPosition;
private Vector3 crouchingVelocity;
void Awake ()
{
standUpPosition = transform.localScale;
crouchPosition = transform.localScale;
crouchPosition.y = crouchHeight;
}
void FixedUpdate ()
{
Vector3 targetPosition;
if (Input.GetButton ("Crouch"))
{
targetPosition = crouchPosition;
}
else
{
targetPosition = standUpPosition;
}
transform.localScale = Vector3.SmoothDamp (transform.localScale, targetPosition, ref crouchingVelocity, (crouchSlowness / 10.0F));
}
}
Lo script funziona, però crea dei movimenti un po' rozzi: praticamente quando premo il tasto "Crouch" il CharacterController diminuisce la propria dimensione, tuttavia nel momento di ritornare alla dimensione di partenza, ovvero in piedi, si fa sentire l'effetto delle gravità e quindi il ridimensionamento avviene vibrando. E' un po' brutto da vedere quindi vorrei sapere se qualcuno sa come risolvere questo inconveniente.