【发布时间】:2021-06-07 06:24:50
【问题描述】:
我刚刚开始探索 unity & c# 一起工作,不小心遇到了下一个问题: 我有一条鱼。鱼本来应该从左到右走,然后改变它的方向,从右到左走。我还没有完成那个移动的部分,但我打算用计时器来做。因此计时器处于活动状态,鱼开始移动,计时器停止,改变方向,计时器重置,鱼开始移动等。 我想翻转我的精灵,所以它会面向正确的方向。它不适用于 Elapsed 函数,我不明白为什么。如果你有任何想法,请分享
using System.Timers;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FishBehavior : MonoBehaviour
{
public float moveSpeed;
private int direction; //for left -1, for right 1
private Timer timer;
private SpriteRenderer img;
private Rigidbody2D rb;
void Start()
{
img = GetComponent<SpriteRenderer>();
rb = GetComponent<Rigidbody2D>();
direction = 1;
timer = new Timer();
timer.Elapsed += TimerElapsed;
ChangeTimerOptions();
}
private void Move()
{
//moving
}
private void ChangeDirection()
{
direction *= -1;
img.flipX = !img.flipX; //Doesn't work!
//stop movement
}
private void ChangeTimerOptions()
{
System.Random rand = new System.Random();
timer.Interval = rand.Next(3000, 8000);
timer.Enabled = true;
Move();
}
private void TimerElapsed(object source, ElapsedEventArgs e)
{
ChangeDirection();
ChangeTimerOptions();
}
}
【问题讨论】: