私はもっとも不思議な問題が発生しています レイキャストがあり、特定のレイヤーに触れると小さなアニメーションを実行する機能が呼び出されます。スクリプトコードがプリフェッチの1つのインスタンスでのみ動作するようです
問題は、これは1つのオブジェクトでしか動作しません。プレハブを複製したり、プレハブをシーンにドラッグしたり、動作しません。
今、私は以下のコードを持っている、とあなたが見ることができるように私は私が単一の項目をドラッグした場合ので、私は、私が気づいたplatfall.startFall();
何かを呼び出すことができ、私はpublic PlatformFall platfall;
でスクリプトにアクセスすることができ、このラインを持っていますInspectorの階層構造からパブリックPlatFallに渡すと、SINGLEオブジェクトは正常に動作します。 (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);
}
}
プラットフォームスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformFall : MonoBehaviour
{
public float fallDelay = 0.5f;
Animator anim;
Rigidbody2D rb2d;
void Awake()
{
Debug.Log("Awake Called");
anim = GetComponent<Animator>();
rb2d = GetComponent<Rigidbody2D>();
}
private void Start()
{
Debug.Log("Start Called");
}
//void OnCollisionEnter2D(Collision2D other)
//{
// Debug.Log(other.gameObject.tag);
// GameObject childObject = other.collider.gameObject;
// Debug.Log(childObject);
// if (other.gameObject.CompareTag("Feet"))
// {
// anim.SetTrigger("PlatformShake");
// Invoke("Fall", fallDelay);
// destroy the Log
// DestroyObject(this.gameObject, 4);
// }
//}
public void startFall()
{
anim.SetTrigger("PlatformShake");
Invoke("Fall", fallDelay);
Debug.Log("Fall Invoked");
// destroy the Log
// DestroyObject(this.gameObject, 4);
}
void Fall()
{
rb2d.isKinematic = false;
rb2d.mass = 15;
}
}
完璧に動作します、私のエラーは何ですか?私はFixedUpdateでそれをやっていなかったので? –
いいえ、あなたのコードは、インスペクタから割り当てられた同じPlatformFallインスタンスを呼び出します。現在は、hittedオブジェクトのPlatformFallコンポーネントを使用しています。 – OsmanSenol