如何使此脚本循环运行?

时间:2019-06-13 11:25:33

标签: c# unity3d

在以下脚本中,gameObject从起点到终点,然后从终点到终点一次。如何在无限循环中运行它?

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import logging
import rasa_core
from rasa_core.agent import Agent
from rasa_core.policies.keras_policy import KerasPolicy
from rasa_core.policies.memoization import MemoizationPolicy
from rasa_core.interpreter import RasaNLUInterpreter
from rasa_core.utils import EndpointConfig
from rasa_core.run import serve_application
from rasa_core import config

from rasa_core.policies.fallback import FallbackPolicy
from rasa_core.policies.keras_policy import KerasPolicy

from flask import Flask
from flask_cors import CORS, cross_origin


app = Flask(__name__)
CORS(app)

logger = logging.getLogger(__name__)

@app.route("/conversations/default/respond",methods=['POST'])
def run_weather_bot(serve_forever=True):
    logging.basicConfig(level="ERROR")
    interpreter = RasaNLUInterpreter('C:\\xxxx_nlu\\models\\nlu\\default\\weathernlu')
    action_endpoint = EndpointConfig(url="http://xxx.xx.xx.xxx:5055/webhook")
    agent = Agent.load('C:\\xxxx_nlu\\models\\dialogue', interpreter=interpreter, action_endpoint=action_endpoint)

    rasa_core.run.serve_application(agent,channel='cmdline')

    return agent


if __name__ == '__main__':

    app.run("xxx.xx.xx.xxx",5005,debug=True)

2 个答案:

答案 0 :(得分:4)

target = origin

覆盖您原来的target值,并且该值“永远丢失”。

您可以继续使用它,但是应该这样做

if (transform.position == target)
{
    target = origin;
    origin = transform.position;
}

因此您已存储了原始目标(==当前transform.position)值,以便下次切换。


或者,您也可以通过一个简单的标志来做到这一点:

private bool backToOrigin;

void Update()
{
    // if flag is true travels to origin otherwise to target
    transform.position = Vector3.MoveTowards (transform.position, backToOrigin ? origin : target, speed * Time.deltaTime);

    // if one of the two positions is reached invert the flag
    if (transform.position == target || transform.position == origin)
    {
        backToOrigin = !backToOrigin;
    }
}

transform.position = Vector3.MoveTowards (transform.position, backToOrigin ? origin : target, speed * Time.deltaTime);

是写作的单行速记

if(backToOrigin)
{
    transform.position = Vector3.MoveTowards (transform.position, origin, speed * Time.deltaTime);
}
else
{
    transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime);
}

答案 1 :(得分:0)

只需将目标和原点存储在单独的变量/字段/属性中,然后使用第三变量。第三个用于移动,而不是分配目标变量,请使用第三个。创建一个新的if子句,在其中对原点进行测试,然后将原点应用于第三个var。它会在目标和原点之间切换

相关问题