【发布时间】:2021-01-13 01:10:31
【问题描述】:
我是新手,在他被摧毁后我很难重生我的 AI(现在他只是一个跟随我的玩家的立方体)。我相信这是因为脚本位于被破坏的对象上。但是我需要做什么才能重生它?
(虽然我确定我的重生代码不好:\(它是 mobile-android 项目))
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyTesting : MonoBehaviour
{
[SerializeField]
public GameObject player;
public GameObject enemy;
private Rigidbody body;
Vector3 accelerationDir;
// Use this for initialization
void Start()
{
body = GetComponent<Rigidbody>();
}
private void Update()
{
accelerationDir = Input.acceleration;
if (accelerationDir.sqrMagnitude>=5)
{
EnemyDead();
}
}
void EnemyDead()
{
Destroy(enemy);
Invoke("Respawn", 5);
}
void Respawn()
{
enemy = (GameObject)Instantiate(enemy);
enemy.transform.position = transform.position;
}
// Update is called once per frame
void FixedUpdate()
{
Vector3 toTarget = player.transform.position - transform.position;
float speed = 1.5f;
transform.Translate(toTarget * speed * Time.deltaTime);
}
}
非常感谢!
【问题讨论】:
-
您正在破坏
enemy实例.. 那么您想如何在5 秒后将其用作Instantiate的预制件?不如只将其设置为非活动/活动而不销毁和重生它呢? -
但是我想重生它,如果它不活跃并且反应迟钝,它只会从他不活跃的地方激活它。
-
将其设置为非活动状态 -> 移动到新位置 -> 如果需要(如健康等)重置其他值 -> 设置为活动状态 .... => 就像重生一样,实际上不会造成开销销毁和实例化