我在预制件中有一个动态脚本,称为“玩家”。因此,我的脚本也适用于相机和画布。但是我只需要针对“身体”的脚本。
[]
是的,我无法将此脚本移动到“ body”中,因为我需要该脚本用于Rigidbody2D,Network Transform等。简单地说,我的脚本位于“玩家”预制件中,因此我无法移动它-就这些。
using System.Collections;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeedup;
public float moveSpeeddown;
public float rotateSpeed;
public bool moveup;
public bool movedown;
public bool rotateleft;
public bool rotateright;
void Update()
{
if ((Input.GetKey(KeyCode.UpArrow)) || moveup)
{
transform.Translate(Vector3.right * moveSpeedup * Time.deltaTime);
}
if (Input.GetKey(KeyCode.DownArrow) || movedown)
{
transform.Translate(-Vector3.right * moveSpeeddown * Time.deltaTime);
}
if (Input.GetKey(KeyCode.RightArrow) || rotateleft)
{
transform.Rotate(Vector3.forward * rotateSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.LeftArrow) || rotateright)
{
transform.Rotate(Vector3.forward * -rotateSpeed * Time.deltaTime);
}
}
}
答案 0 :(得分:0)
您的问题似乎还不清楚,但是如果我对您的理解是正确的,那么您只希望在“ Body”对象上而不是在父对象“ Player”对象上使用移动脚本。
您可以移动它,只需让Body对象找到其父对象并从中获取那些东西(Rigidbody2D,Transform等)。像...
GameObject parentObject = childObject.transform.parent.gameObject;
您还可以在子对象中为预制件创建公共变量,并将其设置为其父预制件属性。
答案 1 :(得分:0)
这应该有帮助
using System.Collections;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeedup;
public float moveSpeeddown;
public float rotateSpeed;
public bool moveup;
public bool movedown;
public bool rotateleft;
public bool rotateright;
public Transform body;
void Update()
{
if ((Input.GetKey(KeyCode.UpArrow)) || moveup)
{
body.Translate(Vector3.right * moveSpeedup * Time.deltaTime);
}
if (Input.GetKey(KeyCode.DownArrow) || movedown)
{
body.Translate(-Vector3.right * moveSpeeddown * Time.deltaTime);
}
if (Input.GetKey(KeyCode.RightArrow) || rotateleft)
{
body.Rotate(Vector3.forward * rotateSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.LeftArrow) || rotateright)
{
body.Rotate(Vector3.forward * -rotateSpeed * Time.deltaTime);
}
}
}