我想通过代码修改Swing Limit Spring下的Spring,发现它并不能简单的直接通过下面这样赋值
CharacterJoint.swingLimitSpring.spring = value;
问题原因是swingLimitSpring是一个SoftJointLimitSpring类型的结构体,因此需要先声明一个该类型的结构体,先修改这个自己声明的结构体里的Spring的值,再将这个结构体赋值给CharacterJoint.swingLimitSpring。(修改CharacterJoint下面的值同理)
示例代码如下
using UnityEngine;
public class PlayerCtrl : CharacterCtrl
{
[Range(1f, 500f)] public int Force_Y;
CharacterJoint[] joints;
SoftJointLimitSpring swingLimitSpring;
void Start()
{
joints = GetComponentsInChildren<CharacterJoint>();
}
void Update()
{
foreach (var joint in joints)
{
swingLimitSpring.spring = Force_Y;
joint.swingLimitSpring = swingLimitSpring;
}
}
}