c# - 新统一,为什么这个脚本不移动对象?(统一 3D)
问题描述
我是 c# 和 unity 的新手,我正在尝试制作 3d 游戏。这段代码应该让剑来回移动,当我按下按钮时,unity会承认它,但剑不会移动。有谁知道它为什么这样做?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class slash : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
bool slas = false;
if (Input.GetKeyDown(KeyCode.DownArrow))
{
slas = true;
}
if (slas = true)
{
transform.Rotate(0, 30, 0);
transform.Rotate(0,-30,0);
}
}
}
解决方案
您现在在代码中所做的是将您的剑移动 30 度,而不是将其向后移动 30 度。
transform.Rotate(0, 30, 0);
transform.Rotate(0,-30,0);
而且因为它发生得如此之快,你看不到它实际上在移动。
您需要做的是在这两个动作之间添加一个延迟以实际看到它移动。您可以使用动画,然后在代码中播放该动画,或者您只需使用 IEnumerator 来延迟第二个动作。
带有 IEnumerator 的代码:
float delay = 0.5f;
void Update() {
if (Input.GetKeyDown(KeyCode.DownArrow)) {
// Starting IEnumerator
StartCoroutine(SwingSword());
}
}
IEnumerator SwingSword() {
// Swing forwards
transform.Rotate(0, 30, 0);
// Delay
yield return new WaitForSeconds(delay);
// Swing backwards
transform.Rotate(0,-30,0);
}
推荐阅读
- html - 如何使用 XML 和 XSL 创建样式表以转换为 HTML 内容?
- c# - 声明变量而不覆盖变量的问题
- javascript - Express 和 Webpack 问题:“Uncaught SyntaxError: Unexpected token <”
- vue.js - TypeError:尝试记录我的 $refs 时无法读取未定义的属性“0”
- c++ - 在 Win32 应用程序中,如何检索应用程序类别信息
- katalon-studio - 如果 sql 查询返回正确的值,katalon 测试用例
- java - How to return the value of an asynchronous callback?
- javascript - Handling errors from forms - Node / Express
- java - Interface null pointer exception in Network Callback onAvailable method
- c# - Problem with huge numbers in an incremental game (C#, Unity)