Создание экземпляров пользовательских сборных групп в 2D игре unity
Ребята, ниже приведен мой код для моего PlaycontrollerScript и PlatformMover script то ,что я пытаюсь достичь здесь ,это то ,что я хочу, когда мой игрок прыгает на платформу, что конкретная группа платформы спускается вниз, в основном как Doodle jump, но так как я делаю что-то не так здесь группы платформ появляются идеально, но они не двигаются, я довольно новичок в этом. может ли кто-нибудь дать мне представление о том, что я делаю неправильно, или направить меня к учебнику или чему-то еще, любая помощь будет оценена по достоинству
<pre>public class PlatformMover : MonoBehaviour { public GameObject[] easyGroups; public GameObject currentGroup; public GameObject nextGroup; public GameObject startingPlatform; public GameObject lastObjectJumped; public int rand; public int easyMin; public int easyMax; public Transform startingGroupTran; public Transform topSpawnTran; public Transform lowestTran; public float speedDown; public float toLerpDif; public Vector3 toLerp; // Use this for initialization void OnEnable () { FirstGroupFunction(); } void Update() { if (nextGroup.transform.position.y <= 0) { newGroup(); } groupMoveFunction(); } void FirstGroupFunction() { rand = Random.Range(easyMin, easyMax); currentGroup = Instantiate(easyGroups[rand], startingGroupTran.position, startingGroupTran.rotation) as GameObject; rand = Random.Range(easyMin, easyMax); nextGroup = Instantiate(easyGroups[rand], topSpawnTran.position, topSpawnTran.rotation) as GameObject; nextGroup.transform.SetParent(currentGroup.transform); startingPlatform.transform.SetParent(currentGroup.transform); } void groupMoveFunction() { currentGroup.transform.position = Vector3.Lerp(currentGroup.transform.position, toLerp, speedDown * Time.deltaTime); } // Update is called once per frame void newGroup() { nextGroup.transform.SetParent(null); Destroy(currentGroup); currentGroup = nextGroup; rand = Random.Range(easyMin, easyMax); nextGroup = Instantiate(easyGroups[rand], topSpawnTran.position, topSpawnTran.rotation) as GameObject; nextGroup.transform.SetParent(currentGroup.transform); toLerpDif = lastObjectJumped.transform.position.y - lowestTran.position.y; toLerp = new Vector3(0, currentGroup.transform.position.y - toLerpDif, 0); }
<pre>public class Pandacontroller : MonoBehaviour { public float maxSpeed = 10f; bool facingRight = true; Animator anim; bool grounded = false; public Transform groundCheck; float groundRadius = 0.2f; public float jumpForce = 700f; public LayerMask whatisGround; public PlatformMover controller; public string lastjump; public GameObject panda; public Rigidbody2D pandaRigid; public bool isJumping; public int jumptop; public Vector3 toLerp; // Use this for initialization void OnTriggerEnter2d(Collider2D other) { if (other.tag == "Platforms") { isJumping = true; pandaRigid.gravityScale = 0; pandaRigid.velocity = Vector3.zero; } if(other.tag == "Platforms") { lastjump = "Platforms"; controller.lastObjectJumped = other.gameObject; controller.toLerpDif = controller.lastObjectJumped.transform.position.y - controller.lowestTran.position.y; controller.toLerp = new Vector3(0, controller.currentGroup.transform.position.y - controller.toLerpDif, 0); } } void Start () { anim = GetComponent<Animator>(); } void FixedUpdate () { grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatisGround); anim.SetBool("Ground", grounded); anim.SetFloat("vSpeed", GetComponent<Rigidbody2D>().velocity.y); float move = Input.GetAxisRaw("Horizontal"); GetComponent<Rigidbody2D>().velocity = new Vector2(move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y); anim.SetFloat("speed", Mathf.Abs(move)); //flip if (move > 0 && !facingRight) flip(); else if (move < 0 && facingRight) flip(); } void Update() { if (grounded && Input.GetKeyDown(KeyCode.Space)) { anim.SetBool("Ground", false); GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jumpForce)); } } void flip() { facingRight = !facingRight; Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; }
Что я уже пробовал:
Я попробовал нормальное создание экземпляра в определенной точке, это сработало, но было не то ,что я искал, я использовал случайные продолжения поколений платформы, движущейся вниз, которые работали, но это не то, что я тоже искал, но то, как они делают это в Doodle jump, кажется мне достаточно хорошим, поэтому я хочу попробовать это сделать.