C#Unity-设置播放器碰撞时铰链接头的弹簧速度(新编码器)

时间:2018-10-10 20:37:17

标签: c# unity3d

我首先要说的是,我在编码和统一性方面都是新手,但是我正在努力地在这门课上做得很好,所以...随时给我一些指导。

我一直在研究这个机械师的问题。基本上,我希望当玩家撞到桥时倒塌。我正在尝试通过使用带盒对撞机的铰链接头来实现此目的,当玩家撞到桥时,弹簧速度设置为10,桥就位。但是,我一直遇到代码问题:

                    using System.Collections;
                    using System.Collections.Generic;
                    using UnityEngine;

                    public class Jointsiguess : MonoBehaviour
                {      
                void Awake()
                {
                   HingeJoint hinge = GetComponent<HingeJoint>();
                  PlayerManager playerManager;
                  JointSpring hingeSpring = hinge.spring;
                   playerManager = FindObjectOfType<PlayerManager>();
                }

                void OnTriggerEnter(Collider other)
                {
                   if (other.CompareTag("Player"))
                    {
                        hingeSpring.spring = 10;
                        hingeSpring.damper = 0;
                        hingeSpring.targetPosition = 180;
                        hinge.spring = hingeSpring;
                       hinge.useSpring = true;
                    }
                }
            }

如果您知道我可以做些什么来解决此问题,或者您知道我可以做得更好的方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

错误消息:

  

hingeSpring'在当前上下文中不存在Assets / Scripts / Jointsiguess.cs(23,13):错误CS0103:名称铰链'在当前上下文中不存在

是由于该变量是唤醒功能的局部变量。您可以在函数中本地定义变量,并且只能在唤醒函数中访问它。 而是像这样在类中定义变量:

                public class Jointsiguess : MonoBehaviour
                {      
HingeJoint hinge;
PlayerManager playerManager;
JointSpring hingeSpring;
                void Awake()
                {
                   hinge = GetComponent<HingeJoint>();
                  hingeSpring = hinge.spring;
                   playerManager = FindObjectOfType<PlayerManager>();
                }
}

在定义变量时,请确保您在全局范围内进行操作,因为C#具有其变量的作用域。在此处详细了解:http://www.blackwasp.co.uk/CSharpVariableScopes.aspx