将速度分配给刚刚启用的对象的问题

问题描述 投票:0回答:1

我正在制作亚军游戏,如果角色与非活动角色发生碰撞会使他们活跃,问题是如果活动角色与一堆足够接近的非活动角色发生碰撞,非活动角色从活动中获得的速度不会分配给下一个非活动角色. 活动角色通过增加力量来移动,这就是为什么我不能为非活动角色增加力量,而他们正在加速活动角色会走得更远。

启用字符的代码:

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);
        }
    }
}
}
c# unity3d
1个回答
0
投票

我理解部分错误,激活的角色正在传输另一个非活动速度,尽管它在开始时还没有收到它的_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);
    }

    }

我该如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.