我正在为一个统一项目构建一个墙壁放置脚本,你可以将帖子放下来,如果帖子足够接近另一个帖子,墙壁会在它们之间实例化。我遇到的问题是循环列表中的对象,找到确定距离,currentPost和previousPost的2个对象。
[SerializeField]
private GameObject wall;
[SerializeField]
private GameObject post;
public GameObject currentPost;
public GameObject previousPost;
private List<GameObject> posts = new List<GameObject>();
private void Update()
{
GetInput();
Debug.Log(posts.Count);
Debug.Log("Distance" + Distance());
}
private void AdjustWalls()
{
previousPost = posts[0]; //here is where I'm hoping to make the cycling change
if(Distance() > 10)
{
Debug.Log("wall Placed");
}
}
private void AddPosts()
{
currentPost = ((GameObject)Instantiate(post, gridSnap(getWorldPoint()), Quaternion.identity));
posts.Add(currentPost);
AdjustWalls();
}
private void GetInput()
{
if (Input.GetKeyDown("q"))
{
AddPosts();
currentPost.transform.parent = transform;
}
}
public float Distance()
{
return Vector3.Distance(currentPost.transform.position, previousPost.transform.position);
}
感谢任何帮助。
答案 0 :(得分:2)
无法在AddPost
中执行此操作,而是执行以下操作并从previousPost = posts[0];
删除AdjustWalls()
行?:
private void AddPosts()
{
if(currentPost != null)
{
previousPost = currentPost;
}
currentPost = ((GameObject)Instantiate(post, gridSnap(getWorldPoint()), Quaternion.identity));
posts.Add(currentPost);
AdjustWalls();
}