我首先要说的是,我在编码和统一性方面都是新手,但是我正在努力地在这门课上做得很好,所以...随时给我一些指导。
我一直在研究这个机械师的问题。基本上,我希望当玩家撞到桥时倒塌。我正在尝试通过使用带盒对撞机的铰链接头来实现此目的,当玩家撞到桥时,弹簧速度设置为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;
}
}
}
如果您知道我可以做些什么来解决此问题,或者您知道我可以做得更好的方法,请告诉我。
答案 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。