我正在制作亚军游戏,如果角色与非活动角色发生碰撞会使他们活跃,问题是如果活动角色与一堆足够接近的非活动角色发生碰撞,非活动角色从活动中获得的速度不会分配给下一个非活动角色. 活动角色通过增加力量来移动,这就是为什么我不能为非活动角色增加力量,而他们正在加速活动角色会走得更远。
启用字符的代码:
using UnityEngine;
public class Stickman : MonoBehaviour
{
private Rigidbody _rigidbody;
private void Start()
{
_rigidbody = GetComponent<Rigidbody>();
}
private void OnTriggerEnter(Collider collider)
{
CheckColliderObject(collider);
}
private void OnTriggerStay(Collider other)
{
CheckColliderObject(other);
}
private void ActivateStickman(Collider collider)
{
collider.gameObject.GetComponent<Stickman>().enabled = true;
collider.gameObject.GetComponent<StickmanMover>().enabled = true;
collider.gameObject.GetComponent<StickmanAnimator>().enabled = true;
collider.gameObject.GetComponentInChildren<Renderer>().material.color = Color.yellow;
collider.gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * _rigidbody.velocity.magnitude;
}
private void CheckColliderObject(Collider colliderObject)
{
if (!gameObject.GetComponent<Stickman>().enabled)
{
return;
}
else if (colliderObject.gameObject.GetComponent<StickmanMover>())
{
if (!colliderObject.gameObject.GetComponent<StickmanMover>().enabled)
{
ActivateStickman(colliderObject);
}
}
}
}
我理解部分错误,激活的角色正在传输另一个非活动速度,尽管它在开始时还没有收到它的_rigidbody,所以我在行和游戏之前检查了 null _rigidbody'粉碎:
collider.gameObject.GetComponent<Rigidbody>().velocity = Vector3.forward * _rigidbody.velocity.magnitude;
它奏效了,但现在未设置非活动角色的速度,并且由于 AddForce 的默认移动,它们开始延迟运行:
private void Update()
{
if (Input.GetKey(KeyCode.Mouse0) && _rigidbody.velocity.magnitude < _maxSpeedMoving)
{
_rigidbody.AddForce(transform.forward * _speedMoving * Time.deltaTime);
}
}
我该如何解决?