Unity3d 统一,生成一个预制件到;“最近目标”;游戏对象';s位置

Unity3d 统一,生成一个预制件到;“最近目标”;游戏对象';s位置,unity3d,instantiation,spawn,Unity3d,Instantiation,Spawn,我正在创建一个正在创建对象的游戏。这些物体正在向左移动,玩家必须在物体到达屏幕末端之前按下空格键。除了在移动的对象上生成一个预置外,其他一切都可以正常工作 其思想是在最近的目标上生成动画。但是当实例化时,预置总是在预置位置(0,0,0)实例化。如何在正确的位置生成实例化的预置?(我已经用print(nearestTarget.transform.position)进行了测试,根据“nearestTarget”的不同,print总是给我一个不同的位置) 正在尝试在handlapanimation(

我正在创建一个正在创建对象的游戏。这些物体正在向左移动,玩家必须在物体到达屏幕末端之前按下空格键。除了在移动的对象上生成一个预置外,其他一切都可以正常工作

其思想是在最近的目标上生成动画。但是当实例化时,预置总是在预置位置(0,0,0)实例化。如何在正确的位置生成实例化的预置?(我已经用print(nearestTarget.transform.position)进行了测试,根据“nearestTarget”的不同,print总是给我一个不同的位置)

正在尝试在handlapanimation()方法中生成预置

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类PlayerInput:单一行为
{
//参考levelManager
[序列化字段]LevelManager LevelManager;
//所有当前实体的数组
私有游戏对象[]目标;
//最近实体
靠近目标的私人游戏对象;
//所有当前实体的所有x位置的数组
私人浮动[]目标位置;
//所有实体中最近的x位置(transform.position.x)
在最靠近的地方私人漂浮;
//查找浮点值的索引位置
私有整数索引;
//按键时要实例化的手动预制
公共游戏对象预制;
无效更新()
{
if(Input.GetKeyDown(KeyCode.Space))
{
targets=GameObject.FindGameObjectsWithTag(“实体”);
如果(targets.Length>0)
{
FindLocationFentities();
分配最近的目标();
手摇动画();
摧毁最近的目标();
}
}
}
void findLocationFentities()
{
locationOfTargets=新浮点数[targets.Length];
for(int i=0;i

}问题在于:

Instantiate(handPrefab, transform.position, Quaternion.identity);
transform.position
是实际对象的位置,即您的
PlayerInput
实例

然后,您可以执行:
handpreaf.transform.SetParent(nearestTarget.transform)
但这不会移动位置,只会设置父对象

不要在
实例化
方法中使用
transform.position
,而是使用
nearestTarget.transform.position

Instantiate(handPrefab, nearestTarget.transform.position, Quaternion.identity);

好。不,手在哪里,拍打你在移动它。您已经设置了它的父级,而不是移动它,您可以在代码运行的任何地方实例化它。但你没有设定它的位置。查看实例化或移动其位置的参数
Instantiate(handPrefab, nearestTarget.transform.position, Quaternion.identity);