c# - 变量未在 void Start() 上赋值(菜鸟问题)
问题描述
我有一个代码可以使立方体在其原始放置位置的一定范围内来回移动。
脚本直接在立方体上,它确实移动,但在 0,0,0 坐标附近,而不是它的原始位置。
这是我的代码:
using UnityEngine;
public class ObstacleResonator : MonoBehaviour
{
public float xspeed = 0f;
public float yspeed = 0f;
public float zspeed = 0f;
public float xrange = 0f;
public float yrange = 0f;
public float zrange = 0f;
float StartX;
float StartY;
float StartZ;
Vector3 desiredPosition;
void Start()
{
// this is what i think is the problem, the variables are not getting assigned
float StartX = transform.position.x;
float StartY = transform.position.y;
float StartZ = transform.position.z;
}
// Update is called once per frame
void Update()
{
// the following is to make it reverse once it is out of range in any of the axes
if (transform.position.x > xrange + StartX)
{
xspeed = -xspeed;
}
if (transform.position.x < -xrange + StartX)
{
xspeed = -xspeed;
}
if (transform.position.y > yrange + StartY)
{
yspeed = -yspeed;
}
if (transform.position.y < -yrange + StartY)
{
yspeed = -yspeed;
}
if (transform.position.z > zrange + StartZ)
{
zspeed = -zspeed;
}
if (transform.position.z < -zrange + StartZ)
{
zspeed = -zspeed;
}
// the following actually moves the cube
desiredPosition.x = transform.position.x + xspeed * Time.deltaTime;
desiredPosition.y = transform.position.y + yspeed * Time.deltaTime;
desiredPosition.z = transform.position.z + zspeed * Time.deltaTime;
transform.position = desiredPosition;
}
}
可能有一种更紧凑的方式来编写它。
立方体正在围绕 0,0,0 而不是原来的变换位置移动。我尝试手动分配 StartX、StartY、StartZ 值,并且效果很好,但它们似乎并没有在一开始就被分配。
解决方案
问题是您在 Start() 函数中声明了 NEW 变量,一旦函数执行,它们就会超出范围。您不更新类变量。
改用这个:
void Start()
{
StartX = transform.position.x;
StartY = transform.position.y;
StartZ = transform.position.z;
}
推荐阅读
- r - 如何在不变形地图的情况下使用 spTransform 将投影 proj=laea 更改为 longlat?
- javascript - 使用 Jest-Puppeteer (Javascript) 进行 HTML 画布测试
- networking - tcp 连接的 tcp_reordering 设置
- linux - 如何在 AWS Linux 2 上安装 FTGL
- go - 通过中间件取消
- java - 配置问题:找不到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/data/mongo]
- python - 用于 Windows 和 Cgo 的 Python-Dev
- google-chrome - 让 Chrome 接受自签名的本地主机证书,说证书被撤销
- amazon-web-services - 带有 DynamoDB 和 Graal 的 Micronaut 无服务器应用程序 java.lang.NoClassDefFoundError:无法初始化类 com.amazonaws.ClientConfiguration
- python-3.x - Pytest/xdist 中的序列化问题