修改其他Object's脚本

本文关键字:脚本 其他 Object 修改 | 更新日期: 2023-09-27 18:16:42

我需要在碰撞时更改其他对象的vitesse,这是我的代码:

void OnControllerColliderHit(ControllerColliderHit hit)
{
    Collider collider = hit.collider;
    if (!collider.gameObject.name.Equals ("Plane"))
    {
        CharacterController opponent = collider.GetComponent(typeof(CharacterController)) as CharacterController;
        if (opponent  == null)
        {
            return;
        }
        Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
        opponent.Move (pushDir * pushPower * Time.deltaTime);
    }
}

但这不是我想要的,实际上,对手也有一个脚本,我想改变脚本上的一些属性,例如:

opponent.vitesse += pushDir * pushPower * Time.deltaTime;

vitesse是object Opponent类的属性之一。我想要的是当我击中对手时改变它的视觉效果,而不是直接移动它

修改其他Object's脚本

Opponent opponent = collider.GetComponent(typeof(Opponent)) as Opponent;

代替

CharacterController opponent = collider.GetComponent(typeof(CharacterController)) as CharacterController;

这样你就可以改变对手脚本中的变量

完整代码:

void OnControllerColliderHit(ControllerColliderHit hit)
{
    Collider collider = hit.collider;
    if (!collider.gameObject.name.Equals ("Plane"))
    {
        Opponent opponent = collider.GetComponent(typeof(Opponent)) as Opponent;
        if (opponent  == null)
        {
            return;
        }
        opponent.vitesse += pushDir * pushPower * Time.deltaTime;
    }    
}