我按照Brackeys的教程,如何创建一个水果忍者副本(YouTube但在创建刀片时,我得到的行为并不完全相同。
不同的是,在 实际行为踪迹从上次播放时停止的地方开始。负责这个问题的代码与视频中的代码完全相同。
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,但我试着将刀片移动到了新的位置 Instantiate
办法 UpdateCut
改变位置后,只有在 this.currentBlade == null
.
我找了很多关于这个的资料,甚至找到了一些... ... 其他职位 与同样的问题,但没有答案。
貌似实例化是使用最后一个鼠标位置来实例化预制件。
也许用..:
Instantiate(bladeTrailPrefab, Camera.main.ScreenToWorldPoint(Input.mousePosition), Quaternion.identity)