Я делаю FPS-игру в единстве.Я написал скрипт для пистолета, чтобы он двигался назад, когда он находится близко к объекту, а также для включения прицела.Я использовал анимацию для оружия, чтобы двигаться назад (gunBackward) и для включения прицела (Scoper), а также для обычного положения оружия (idleGun).Но теперь в единстве, когда я играю в игру, я не могу включить прицел, когда Рэй попадает в коллайдер. Пушка начинает вибрировать.Я могу включить прицел только тогда, когда смотрю на небо.
public float distance;
public GameObject origin;
public bool scop;
public Animator anim;
public GameObject CrossHair;
public bool scoped;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown ("Fire2")) {
scoped = true;
scop = false;
}
if (Input.GetButtonUp ("Fire2"))
{
scoped = false;
scop = true;
}
if (scoped == true) {
anim.Play ("Scoper");
}
if (scoped == false)
{
anim.Play("idleGun");
}
Vector3 cartPos = new Vector3 (0.0f, 0.0f, 0.0f);
RaycastHit hit;
if (Physics.Raycast (cartPos+origin.transform.position, transform.TransformDirection (Vector3.forward), out hit))
{
distance = hit.distance;
}
if (hit.transform == null) {
distance = 2.1f;
return;
}
if (distance < 2)
{
anim.Play ("gunBackward");
}
if (distance > 2)
{
anim.Play("idleGun");
}
}
}