美好的一天
我正在编写我的第一个统一程序,但遇到一个对我来说没有道理的错误。游戏开始时,我在屏幕上有一个随机移动的角色。尽管我正在随机分配值,但角色似乎总是朝着同一方向移动。
我打算在达到极限后立即随机改变方向,但这似乎也不起作用。方向似乎从未改变,我想知道这是否是由于我收到的运行时错误所致。
该错误告诉我未设置类中的RigidBody变量。我知道我已经设置好了,而且角色移动的事实告诉我正在找到刚体组件。
我的代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Unit : MonoBehaviour {
// Use this for initialization
int direction;
public Rigidbody2D rb;
int speed = 5;
int maxX = 6;
int minX = -6;
int maxY = 4;
int minY = -4;
void Start () {
randomDirection();
}
void randomDirection()
{
System.Random rand = new System.Random(Guid.NewGuid().GetHashCode());
int temp = -1;
while(temp != direction)
{
temp = rand.Next(0, 4);
}
direction = temp;
switch (direction)
{
case 0:
rb.velocity = new Vector2(-speed, 0);
break;
case 1:
rb.velocity = new Vector2(speed, 0);
break;
case 2:
rb.velocity = new Vector2(0, -speed);
break;
case 3:
rb.velocity = new Vector2(0, speed);
break;
}
}
// Update is called once per frame
void Update () {
if (transform.position.x >= maxX || transform.position.y >= maxY || transform.position.y <= minX || transform.position.y <= minY)
{
randomDirection();
}
Vector2 pos = transform.position;
pos.x = Mathf.Clamp(pos.x, -maxX, maxX);
pos.y = Mathf.Clamp(pos.y, -maxY, maxY);
transform.position = pos;
}
}
这是我的检查器的屏幕快照,显示设置了rb(我的RigidBody变量):
这是我收到的错误:
UnassignedReferenceException:单位的变量rb尚未被使用 已分配。您可能需要分配Unit的rb变量 检查器中的脚本。 UnityEngine.Rigidbody2D.set_velocity(Vector2 值)(在 C:/buildslave/unity/build/artifacts/generated/common/modules/Physics2D/Physics2DBindings.gen.cs:2060) Unit.randomDirection()(在Assets / Scripts / Unit.cs:36处)Unit.Start() (位于Assets / Scripts / Unit.cs:17)
我不确定是否正在检查是否已正确达到限制。我正在使用钳位命令将单位限制为屏幕的限制。我在if语句中放入了一个调试命令,该命令检查了我的限制,并且似乎已经达到了限制,但是方向仍然没有改变。
任何建议将不胜感激。预先感谢!