Я следовал руководству Brackeys по созданию реплики Fruit Ninja ( youtube ). Однако при создании блейда поведение, которое я получил, было не совсем таким.
Ожидаемое поведение
Actual behaviour
The difference is that in the Actual behaviour, the trail starts where it stopped the last time it was shown. The code responsible for this is exactly the same as the video:
public class BladeController : MonoBehaviour
{
bool isCutting = false;
public GameObject bladeTrailPrefab;
GameObject currentBlade;
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0)) {
StartCutting();
} else if (Input.GetMouseButtonUp(0)) {
StopCutting();
}
if (isCutting) {
UpdateCut();
}
}
void UpdateCut()
{
GetComponent<Rigidbody2D>().position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
void StartCutting()
{
isCutting = true;
this.currentBlade = Instantiate(bladeTrailPrefab, transform);
}
void StopCutting()
{
isCutting = false;
Destroy(currentBlade, 1f);
}
}
После понимания кода я мне показалось, что проблема заключалась в том, что я создал экземпляр BladeTrail перед тем, как переместить Blade в новую позицию, но попытался переместить метод Instantiate
в UpdateCut
после изменения позиции и только если this.currentBlade == null
.
I ' Мы много об этом искали и даже нашли других сообщений с той же проблемой, но без ответа.