移动预制件的旋转

问题描述 投票:0回答:1

我正在创建一个游戏,作为玩家,你需要躲避向下移动的物体。我有物体在屏幕的右侧和左侧移动。

默认情况下,我的预制件创建为在右侧生成并面向右侧,我需要将此预制件正确镜像到左侧。

我实例化预制件并对它们施加力使其向下移动:

// SpawnManager.cs
Instantiate(obstaclePrefabs, spawnPosLeft, transform.rotation);
// MoveDown.cs
void Update()
{
    if (playerPositionScript.gameOver == false)
    {
        transform.Translate(Vector3.down * speed * Time.deltaTime);
    }
}

我已经尝试过:

  1. 更改预制件旋转:
Instantiate(obstaclePrefabs, spawnPosLeft, transform.rotation = Quaternion.Euler(0, 0, 180));
  1. 在我的预制件中添加一个空的
    gameObject
    并尝试旋转它:
 public GameObject obstaclePrefabs;
 private GameObject obstacleRotation;

void Start()
{
 obstacleRotation = obstaclePrefabs.GetComponentInChildren<GameObject>();
 InvokeRepeating("SpawnRandomObstacle", 0, delaySpawn); 
}

private void SpawnRandomObstacle()
{
obstacleRotation.transform.rotation = Quaternion.Euler(0, 0, 180);
Instantiate(obstaclePrefabs, spawnPosLeft, transform.rotation);
}

出了什么问题:

  1. 这是不正确的,因为我不断地从上到下施加力,当我旋转物体时,它会从下到上。
  2. 它只是在
    gameObject
    中找不到我的空
    obstaclePrefab
    并且什么也没有生成。
c# unity-game-engine mobile game-development unityscript
1个回答
0
投票

我用俄语写作,因为我的英语很糟糕。使用翻译器

  1. Если я правильно понял, ты создал дочерний объект 障碍旋转 внутри 障碍预制件。 Если ты будешь обращаться к этому объекту и пытаться вращать его,то родительский объект вращаться не будет。 Обращайся к нему напрямую, если хочешь изменить Transform.
  2. Сделай проверку в 更新 на значение 转换.旋转 своего объекта и в зависимости от значения((0,0,180) или (0,0,0)) используй Vector3.down или .上

希望您能阅读,我的回答会对您有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.