简而言之,我有一个2d游戏,忍者会产生并向我的玩家投掷忍者星。我让我的忍者明星成为我的忍者敌人的孩子,并将我的忍者拖入项目文件夹,使其成为预制件。为了让我的忍者明星跟随我的玩家,我必须让他成为预制件。我的播放器有一个鼠标脚本附加到它,我的播放器通过鼠标触摸移动。我注意到,每当我移动我的播放器时,忍者星都没有直接跟随我的播放器预制,但是到了最后一个地方我把我的播放器预制在场景视图中。我发现了我的问题的问题,这是因为我把我的播放器预制件放在脚本预制字段中为我的忍者星,当我试图将我的播放器对象放在脚本预制字段中为我的忍者明星它不会工作。有没有办法让我的忍者明星跟随我的玩家而不是跟随我的播放器预制?谢谢。忍者明星剧本:
#pragma strict
var Player : Transform;
var MoveSpeed = 4;
var MaxDist = 10;
var MinDist = 5;
function Start ()
{
GetComponent.<Rigidbody2D>().angularVelocity = Random.Range(-200, 200);
Destroy(gameObject, 2.4);
}
function Update ()
{
if(Vector3.Distance(transform.position,Player.position) >= MinDist){
transform.position += (Player.transform.position - transform.position).normalized * MoveSpeed * Time.deltaTime;
}
}
一张跟随我所说的内容的图片。 (george_0是我的播放器,跟随我的忍者明星跟随我的脚本。)http://i.imgur.com/iRVO3eS.png?1
答案 0 :(得分:0)
您的播放器不需要是预制件。使它成为一个并不坏,但那是出于其他原因(你不能将预制分配给该Player变量来进行以下工作就是我的意思)。您可以在忍者之星的Start
功能中获取它,例如做一个Player = GameObject.Find("george_0");
。
您还有var Player : Transform
,但后来使用基本为Player.transform.position
的{{1}}。将Player设为GameObject或仅使用transform.transform.position
。根据此情况,您可能需要将Player.position
更改为Find()
。
对于实际的动作,我会说这样做(假设Player在这种情况下是变换):
Player = GameObject.Find("george_0").transform;