我遇到了最奇怪的问题 我有一个光线投射,当它接触某个图层时,它会调用我的函数,它会做一个小动画。
问题是,这只适用于单个物体,我试过复制,复制预制件,将预制件拖到场景中,它不起作用。
现在我在下面有这个代码,正如您所看到的,我有这一行允许我访问f = -> {puts "Shorthand lambda"}
f.()
上的脚本,因此我可以致电public PlatformFall platfall;
我注意到的事情,如果我将一个项目从层次结构拖到Inspector中的公共PlatFall,那么该SINGLE对象就可以正常工作。 (因为它在调用startFall时动画)。但是,如果我将预制件从我的项目拖到检查员那么他们就无法工作了。 (即使调试日志显示该方法被称为动画也不会发生)。
platfall.startFall();
平台脚本
public class CharacterController2D : MonoBehaviour {
//JummpRay Cast
public PlatformFall platfall;
// LayerMask to determine what is considered ground for the player
public LayerMask whatIsGround;
public LayerMask WhatIsFallingPlatform;
// Transform just below feet for checking if player is grounded
public Transform groundCheck;
/*....
...*/
Update(){
// Ray Casting to Fallingplatform
isFallingPlatform = Physics2D.Linecast(_transform.position, groundCheck.position, WhatIsFallingPlatform);
if (isFallingPlatform)
{
Debug.Log("Here");
platfall.startFall();
}
Debug.Log(isFallingPlatform);
}
}
答案 0 :(得分:1)
我从你的帖子中了解到你总是调用从督察分配的PlatformFall实例。我认为这种变化将解决您的问题。
public class CharacterController2D : MonoBehaviour {
private PlatformFall platfall;
private RaycastHit2D isFallingPlatform;
void FixedUpdate(){
isFallingPlatform = Physics2D.Linecast(_transform.position, groundCheck.position, WhatIsFallingPlatform);
if (isFallingPlatform)
{
Debug.Log("Here");
platfall = isFallingPlatform.transform.GetComponent<PlatformFall>();
platfall.startFall();
}
}
}
顺便说一下,我假设你把预制件放到合适的位置进行施法。还有一件事,你应该在FixedUpdate中进行影响刚体的物理操作。