c# - 如何通过重复按一个键将 Unity3D 中的对象从一个位置移动到另一个位置并按设定的顺序进一步移动?
问题描述
有没有办法通过按键将Unity3d中的对象从一个地方(target1)移动到另一个地方(target2 ..等等)?
我用了...
private void FixedUpdate()
{
if (Input.GetKey("s"))
{
transform.position = target1.position;
}
}
...将对象形式 Start 移动到第一个目标,但如果只是编写另一个 if 语句,则对象将直接转到目标 2... :(
我想要:对象从 target1 移动到 target2 到 target3 等等,按“s”
我希望有一个人可以帮助我 :)
解决方案
我的理解是,您要么希望对象有一系列可移动的位置,要么希望每次按下按钮时对象移动一定量。我将为每一个给出一个例子和一个解释。
- 您想将一个对象移动到不同的点,而不是每次都移动一个特定的量。首先,您可以使用一个数组,并按顺序填充对象要移动的位置。然后,您可以有一个公共变量,用于在每次按下按钮时循环遍历数组。现在,
Input.GetKey("s")
您需要的是 ,而不是有几个问题的Input.GetKeyDown(KeyCode.S)
,因为 GetKeyDown 仅在您按下键时触发,而 GetKey 会在按下键的每一帧触发。您还需要 KeyCode,因为这就是 KeyCode 的用途。示例代码:
public class ExampleScript : MonoBehaviour
{
public int index = 0;
public Vector3[] positions = new Vector3[the amount of positions you have];
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
transform.position = positions[index];
index++;
}
}
}
- 你想移动一个固定的数量。
使用相同的代码,但没有数组和 int,而是使用 Vector3 来表示您想要移动多少。然后,在 GetKeyDown 中,您将执行类似 transform.position += moveAmount 的操作。
:)
PS:在 Stackoverflow 上提问时,您应该添加更多细节,但这是一个非常好的问题,尤其是与我见过的其他问题相比。
推荐阅读
- html - 如何在codeigniter中“将来自文本字段的输入存储在PHP变量中”?
- javascript - JavaScript FireBase 显示名称注册
- xcode - Xcode storyboard ViewController 显示不同
- apache-kafka - Kafka中生产者和消费者的混淆
- javascript - Google Drive API 分段上传文件损坏,大小 1kb
- css - Bootstrap 3导航栏重叠
- reactjs - 显示来自 axios 响应拦截器的模式。反应
- c++ - 银行记录我想要求用户输入一个 4 位数的密码,不输入字母
- javascript - Elasticsearch - 模糊搜索不提供建议
- locust - 有没有办法在 Web/NoWeb 方法中将蝗虫图另存为图像文件?