我最近刚接触到c#,我需要一些帮助。
实际上,我有两个脚本,一个用于生成对象,一个用于沿着路径移动对象。我需要一种方法来合并这两种机制,以便当一个新对象被示例化时,它自动加入路径并跟随它。
路径是使用iTween. ![The objects the scripts are attached to] (https://i.stack.imgur.com/QPQn2.png)创建的
我尝试过将变量m_PlayerObj更改为立方体预制件,并尝试过将Path脚本添加到示例化脚本,但似乎没有任何效果。
附加的脚本不包括我所做的这些尝试,因为我想让代码非常清楚。
Spawner脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnerScript : MonoBehaviour
{
public GameObject cubeprefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(cubeprefab, transform.position, Quaternion.identity);
}
}
}
路径脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Path : MonoBehaviour
{
public GameObject m_PlayerObj;
public Transform[] positionPoint;
[Range(0, 1)]
public float value;
// Start is called before the first frame update
void Start()
{
Debug.Log(iTween.PathLength(positionPoint));
}
float tempTime;
// Update is called once per frame
void Update()
{
if (value < 1)
{
value += Time.deltaTime / 10;
}
iTween.PutOnPath(m_PlayerObj, positionPoint, value);
}
private void OnDrawGizmos()
{
iTween.DrawPath(positionPoint,Color.green);
}
}
如上所述,任何帮助都将非常感谢,因为我真的被困在这个概念,因为我是新的统一,我真的看不到一个方法来解决它//如何修复它。
1条答案
按热度按时间r7s23pms1#
在
Path
脚本中存储一个对象集合,而不是只存储播放器对象,这样路径就可以跟踪多个对象。然后,在
Update
循环中,您可以循环遍历所有这些元素。当然,现在,你需要确保在你繁殖
Path
游戏对象时将你的立方体示例传递给它,这样路径就知道立方体跟随者。这意味着你的繁殖者也需要知道路径。现在一个新的问题是,每个对象在路径上的位置都是相同的,因为路径只存储一个
value
--更好的术语可能是progress
。所以,如果它们都是相同的,比如立方体,你将无法分辨,因为它们会重叠。因此,您必须决定要执行什么操作。均匀地将它们间隔开?您可以通过一些数学运算来实现。或者让它们从头开始并分别跟踪它们的进度?然后,您需要存储每个进程的进度。更好的方法可能是在多维数据集对象上执行此操作,这意味着您需要向多维数据集预制件添加一个新脚本:
而且,您需要开始通过此脚本引用prefab,而不仅仅是
GameObject
:第一个
最后,您需要确保为每个路径跟随者使用单独的进度,而不是像旧的路径脚本那样使用单个进度值:
把所有这些放在一起(当然是单独的文件,带有它们自己的
include
!):