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))
{
вот сюда
}
Но объект отдаляется от персонажа, и в какой-то момент код перестает работать
Вопрос решен, переменная pressF не должна быть статичной
Answered by Ch_sh on November 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP