添加传送玩家的力量



我想在玩家与物体碰撞时将其推回,但当玩家与物体相撞时,它只是向后传送,而不是顺利推进。我调整了一些值,比如Mass,Dragon player的刚体或knockbackStrenght的值。它只是用更高的值传送更远的位置,用更低的值传送到更近的位置,但它总是传送而不是推回。

我在将推回玩家的对象上的代码看起来像:

public class StickRotator : MonoBehaviour
{
[SerializeField] float rotateSpeed;
[SerializeField] float knockbackStrenght;
[SerializeField] Vector3 rotateDir;
Vector3 _parentPos;
void Start()
{
_parentPos = GetComponentInParent<Transform>().position;
}
void Update()
{
transform.RotateAround(_parentPos, rotateDir, rotateSpeed * Time.deltaTime);
}
void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag("Player"))
{
other.gameObject.GetComponent<Rigidbody>().AddForce
(Vector3.back * knockbackStrenght, ForceMode.Impulse);
}
}
}

玩家的刚体设置

当玩家与棍子相撞时,它只是向后传送,而不是向后推

除了@abshine的评论外,您还可以尝试使用rigidbody.velocity而不是AddForce。

我发现播放器上的Animator组件导致了问题。取消勾选"应用根部运动"似乎解决了我的问题,但现在当玩家顺利推回时,它会抖动。

最新更新