TransWikia.com

Отталкивание объекта от персонажа (Unity)

Stack Overflow на русском Asked by Ch_sh on November 15, 2021

У меня есть сцена, в которой есть несколько одинаковых предметов и персонаж.

Цель сделать так, чтобы персонаж подходил к объекту, игрок нажимал кнопку F, и объект сдвигался на определенное расстояние, а персонаж оставался бы на месте.

Предметы создаю через Prefab. На каждом экземпляре висит вот такой скрипт

private static float Speed = -0.8f; 
private static float posStart, posFinish, currentPos;
private static bool pressF;

void Update () {

        posFinish = posStart + 0.8f;
        currentPos = transform.position.y;

        if(pressF==true)
        {
            transform.Translate(0, Speed*Time.deltaTime, 0);

        }

        if (currentPos >= posFinish)
        {
            transform.Translate(0, 0, 0);
            pressF=false;
        }

        if (GetComponent<ObjectScript>().checkObject == true&&Input.GetKeyDown(KeyCode.F))
        {
            pressF=true;
            posStart = transform.position.y;
        }

    }

(checkObject – переменная, с помощью которой можно узнать, что персонаж подошел к объекту, работает через OnCollisionEnter2D)

Но с таким кодом двигаются сразу все экземпляры префаба. Как я понимаю, из-за переменной pressF. Но как это можно реализовать по-другому или как доработать этот код?

Первой мыслью было перенести все вот сюда

if (GetComponent<ObjectScript>().checkObject == true&&Input.GetKeyDown(KeyCode.F))
        {
           вот сюда
        }

Но объект отдаляется от персонажа, и в какой-то момент код перестает работать

One Answer

Вопрос решен, переменная pressF не должна быть статичной

Answered by Ch_sh on November 15, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP