我的第二个立方体不会跑

时间:2018-02-15 13:07:00

标签: c# unity3d

在我的游戏中,一个正常的立方体变为一个超级立方体。

using UnityEngine;

public class PlayerSkift : MonoBehaviour {
    public GameObject myObject1;
    public GameObject myObject2;

    // Update is called once per frame
    void Update () {

        if (Input.GetKeyDown (KeyCode.UpArrow))
        {
            myObject1.SetActive (false);
            myObject2.SetActive (true);

        }

        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            myObject2.SetActive(false);
            myObject1.SetActive(true);

        }

    }
}

这段代码是什么让它这样做。             但是当我改变我的小立方体时,它不会去任何地方。此脚本使多维数据集运行。

using UnityEngine;

public class PlayerMovement : MonoBehaviour {
    public Rigidbody rb;
    public float forwardForce = 2000f;  
    public float sidewaysForce = 500f;  

    void FixedUpdate ()
    {
        // Add a forward force
        rb.AddForce(0, 0, forwardForce * Time.deltaTime);

        if (Input.GetKey("d"))  
        {

            rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
        }

        if (Input.GetKey("a"))  
        {

            rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
        }

        if (rb.position.y < -1f)
        {
            FindObjectOfType<GameManager>().EndGame();
        }
    }
}

它在较小的立方体上。所以较小的立方体遵循更大的代码:

using UnityEngine;

public class Pl2føglPl1 : MonoBehaviour
{
    public Transform player1;
    public Vector3 offset;


    // Update is called once per frame
    void Update ()
    {
        transform.position = player1.position + offset;
    }
}

当更大的立方体消失时,小家伙不会开始跑步。如果可以的话请求帮助。

2 个答案:

答案 0 :(得分:0)

以下是发生的事情:

public class PlayerMovement 使正常的立方体移动。但public class PlayerSkift执行myObject1.SetActive (false);,因此正常的多维数据集会被停用。并且它不会让void FixedUpdate ()事件处理程序再次启动。所以正常的立方体不会去任何地方,所以跟随它的小立方体也不会去任何地方。

你需要创建一些“虚拟”不可见的GameObject,让你的立方体成为if的子项,将public class PlayerMovement附加到它上面,这样它总是会移动,无论内部子多维数据集状态如何。两个子多维数据集当然都会遵循父级的坐标,因为它们的位置与父级相对。因此,您只需移动父级,无需将多维数据集彼此同步,因此您根本不需要public class Pl2føglPl1

答案 1 :(得分:0)

这是我最终使用的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerSkiftStørelse : MonoBehaviour {

    public Vector3 small;
    public Vector3 normal;
    public Vector3 high;
    public Vector3 offset;

    // Update is called once per frame
    void Update () 
    {
        if (Input.GetKeyDown (KeyCode.DownArrow))  //getkeydown??
        {
            transform.localScale = small;
        } 

        if (Input.GetKeyDown (KeyCode.UpArrow))  //getkeydown??
        {
            transform.localScale = normal;
        } 

    }
}