【发布时间】:2023-02-25 04:42:22
【问题描述】:
我有一个机械师。有一个玩家和一个敌人。他们每个人都可以在触摸时吸引立方体。所以当双方都碰到立方体时,立方体会同时飞向敌人和玩家,我需要它飞向第一个碰到它的人。 这就是我现在所拥有的
[SerializeField] private Transform _cube;
[SerializeField] private Transform _playerParent;
[SerializeField] private Transform _enemyParent;
private Transform _carPlayer, _carEnemy;
public void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.tag == "Player")
{
_carPlayer = collider.transform;
}
if (collider.gameObject.tag == "Enemy")
{
_carEnemy = collider.transform;
}
}
private void FixedUpdate()
{
if (_carPlayer)
{
PlayerTakeCube();
}
if (_carEnemyFirst)
{
EnemyFirstTakeCube();
}
}
private void PlayerTakeCube()
{
_cube.transform.position = Vector3.MoveTowards(transform.position,
_playerParent.position, 0.02f);
_cube.transform.rotation = _playerParent.transform.rotation;
_rigidbody.isKinematic = true;
_cube.transform.SetParent(_playerParent);
}
private void EnemyFirstTakeCube()
{
_cube.transform.position = Vector3.MoveTowards(transform.position,
_enemyParent.position, 0.02f);
_cube.transform.rotation = _enemyParent.transform.rotation;
_rigidbody.isKinematic = true;
_cube.transform.SetParent(_enemyParent);
}
【问题讨论】:
-
有点不清楚
_playerParent和_enemyParent来自哪里以及究竟应该发生什么..但是你的代码非常多余,你可以有一个方法并在两种情况下重用它..你也存储_carPlayer和_carEnemy引用但从未真正使用过它们...另外_cube与此对象相同吗? -
_playerParent 和 _enemyParent 是立方体 (_cube) 应该移动到的 Transforms,它们是汽车的子对象。我在 FixedUpdate() 中使用 _carPlayer 和 _carEnemy 来运行 PlayerTakeCube() 和 EnemyFirstTakeCube() 方法。我需要如果有人是第一个接触立方体的人,他就会飞起来,并且他不应该再对第二个玩家做出反应。
-
_cube是这个脚本附加到的同一个对象吗?_rigidbody也在_cube/ 这个脚本附加的对象上吗? -
是的 _cube,这是脚本附加到的对象,是的 _rigidbody 在这个对象上