gpt4 book ai didi

c# - 为什么我的对象的位置没有改变?

转载 作者:行者123 更新时间:2023-12-05 04:16:29 24 4
gpt4 key购买 nike

我目前正在开发基于 Unity3D 的进化算法。模拟是二维的。一个主题被描绘成汽车,是一个预制件,由 3 个 Sprite (2 个轮子和车身)和一个 CarScript 组成。每个 Sprite 都有一个合适的碰撞器(用于 body 的 BoxCollider2D 和用于车轮的 CircleCollider2D)。车身还有两个 WheelJoint2D。这些碰撞器的参数由代码更改。

我希望这辆车在停止移动或停止前进时被摧毁。在游戏窗口中,汽车明显在下坡。问题是,在检查游戏对象的 transform.position 之后,这个值似乎是恒定的。它总是显示 SpawnPoint 的位置。 SpawnPoint 是带有 SpawnScript 的空 GameObject,片段如下:

public GameObject carprefab; //Set from editor
public Transform[] spawnPoints; //transform of SpawnPoint, just one element. Set from editor.
private void GenerateCar(Chromosome chromosome)
{
int spawnPointIndex = Random.Range(0, spawnPoints.Length);
var instace = (GameObject)Instantiate(carprefab, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
instace.SendMessage("SetChromosome", chromosome);

foreach (Transform child in instace.transform)
{ //code omitted for clarity, changes some of parameters based on chromosome.

实例化对象有一个 CarScript:

 // Update is called once per frame
void Update()
{
if (frames%10 == 0)
CheckForMoving();
frames++;
}
private void CheckForMoving()
{
var pos = gameObject.transform.position; //this is never changing - why?


var diff = pos - startingPosition; //difference between local position and starting position
if (CountLength(diff) >= recordLengthYet)
{
Debug.Log("It is moving!");
recordLengthYet = CountLength(diff);
framesTillLastRecord = 0;
}
else
{
Debug.Log("It is not moving");
if (framesTillLastRecord > 4)
Destroy(gameObject, 0f);
framesTillLastRecord++;
}
}

我尝试通过以下任何方式获得职位:

var pos = gameObject.transform.position;
var pos = GameObject.FindGameObjectWithTag("player");
var pos = this.transform.position;

问题是 - 我错过了什么,或者为什么这没有改变?我最近才开始学习 Unity,之前没有使用过任何类似的软件。我也想知道这样做是否是正确的方法。

最佳答案

几天过去了,没有人上传正确的答案,我设法找到了解决方法。只要它真的很脏,它似乎就可以工作。

我在子游戏对象上放置了一个标签,而不是预制件,我通过以下方式获得了这个 child 的位置

var pos = GameObject.FindGameObjectWithTag("player");

我不确定这是否真的是个好答案,但我希望有一天有人会发现它有用。

关于c# - 为什么我的对象的位置没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27343806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com