c# - unity 通过脚本改变变换对象
问题描述
我有一个脚本,它通过其变换检测对象的距离并将其显示给玩家,我希望目标对象在它被破坏后发生变化,以便目标标记指向不同的对象。到目前为止,这是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
public class DistanceToPickup : MonoBehaviour {
// Reference to checkpoint position
[SerializeField]
private Transform checkpoint;
// Reference to UI text that shows the distance value
[SerializeField]
private Text distanceText;
GameObject exit;
// Calculated distance value
private float distance;
private void Start()
{
exit = GameObject.Find("Door_01");
}
// Update is called once per frame
private void Update()
{
// Calculate distance value between character and checkpoint
distance = (checkpoint.transform.position - transform.position).magnitude;
// Display distance value via UI text
// distance.ToString("F1") shows value with 1 digit after period
// so 12.234 will be shown as 12.2 for example
// distance.ToString("F2") will show 12.23 in this case
distanceText.text = "Pickup: " + distance.ToString("F1") + " meters";
if (Pickup.isDestroyed == true)
{
//point transform checkpoint to new object
checkpoint = exit.transform;
distanceText.text = "Exit: " + distance.ToString("F1") + " meters";
}
}
}
我找到了我也想指向标记的游戏对象,并将检查点标记更改为指向出口变换,但它没有改变距离文本,我看不出代码有什么问题。任何帮助都感激不尽
接送班
public class Pickup : MonoBehaviour {
[SerializeField]
public GameObject m_ExplosionPrefab;
private ParticleSystem m_ExplosionParticles;
private int pickupCounter = 0;
[SerializeField]
private Text PickupText;
public static bool isDestroyed;
private void Update()
{
PickupText.text = "Pickups: " + pickupCounter + " /1";
}
private void OnEnable()
{
// Instantiate the explosion prefab and get a reference to the particle system on it.
m_ExplosionParticles = Instantiate(m_ExplosionPrefab).GetComponent<ParticleSystem>();
// Disable the prefab so it can be activated when it's required.
m_ExplosionParticles.gameObject.SetActive(false);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Player"))
{
Destroy(this.gameObject);
pickupCounter++;
isDestroyed = true;
// Move the instantiated explosion prefab to the tank's position and turn it on.
m_ExplosionParticles.transform.position = transform.position;
m_ExplosionParticles.gameObject.SetActive(true);
// Play the particle system of the tank exploding.
m_ExplosionParticles.Play();
PickupText.text = "Pickups: " + pickupCounter + " /1";
}
}
}
解决方案
尝试改变这个:
private void Update()
{
// Calculate distance value between character and checkpoint
distance = (checkpoint.transform.position - transform.position).magnitude;
// Display distance value via UI text
// distance.ToString("F1") shows value with 1 digit after period
// so 12.234 will be shown as 12.2 for example
// distance.ToString("F2") will show 12.23 in this case
distanceText.text = "Pickup: " + distance.ToString("F1") + " meters";
if (Pickup.isDestroyed == true)
{
//point transform checkpoint to new object
checkpoint = exit.transform;
distanceText.text = "Exit: " + distance.ToString("F1") + " meters";
}
}
对此:
private void Update()
{
if (Pickup.isDestroyed == true)
{
//point transform checkpoint to new object
checkpoint = exit.transform;
distanceText.text = "Exit: " + distance.ToString("F1") + " meters";
}
else
{
// Calculate distance value between character and checkpoint
distance = (checkpoint.transform.position - transform.position).magnitude;
// Display distance value via UI text
// distance.ToString("F1") shows value with 1 digit after period
// so 12.234 will be shown as 12.2 for example
// distance.ToString("F2") will show 12.23 in this case
distanceText.text = "Pickup: " + distance.ToString("F1") + " meters";
}
}
推荐阅读
- asp.net-core - 如何在服务器端交换授权令牌
- shell - 将 mpirun 与 shell 脚本一起使用时出错
- c# - 如何仅在特定用户控件 ascx 中删除“X-Content-Type-Options: nosniff”标头
- javascript - CKEditor 5 工具栏固定位置
- json - 无法访问 JSON 数据并仅打印 Begin 和 End React Native
- python - 为什么我收到空约束错误?
- angular - 如何在不刷新页面的情况下更新组件内部的值?
- azure - 我可以更改现有 NIC 的 V-Net 吗?
- r - 为多个时间序列图从数据帧中分离数据帧
- php - stripos vs glob 用于取消链接