Zorexo
@Zorexo
Пробую, экспериментирую и т. д.

Как исправить код в Unity?

Написал код, который заставляет плавно двигаться объект по горизонтали "туда-сюда".
А этом деле далеко не профессионал.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NailBoard : MonoBehaviour {
    
    public GameObject nail;
    public float moveto; //смещение на... 
    private bool toright = false; // Направлено в право?

	void Start () 
	{
		
	}
	
	void Update () 
	{
		if (toright == false)
		{
            nail.transform.position.x + (moveto * Time.DeltaTime);
            toright = true;
        }
        else
        {
        	nail.transform.position.x - (moveto * Time.DeltaTime);
            toright = false;
        }
	}
}


Unity выдаёт ошибку:
Assets/Scripts/NailBoard.cs(20,28): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement

Если не ттрудно можете скинуть примеры похожего рабочего кода
  • Вопрос задан
  • 241 просмотр
Решения вопроса 2
GavriKos
@GavriKos Куратор тега Unity
Не трудно описать что у вас за ошибка.
Вы складываете два числа (в вашем случае смещение и текущую позицию), но никуда не записываете итоговое значение этого сложения. c# такого не любит. Нужно записать куда то результат, очевидно что в позицию.
Ответ написан
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Используй MoveTowards, чтобы двигать плавно:
using UnityEngine;

// moves item from start point to end and vise versa
public class BoundedMover : MonoBehaviour
{
    public Vector3 endPoint;
    public float speed;

    private Vector3 startPoint;
    private Vector3 target;

    void Start()
    {
        startPoint = transform.localPosition;
        target = endPoint;
    }

    void FixedUpdate()
    {
        transform.localPosition = Vector3.MoveTowards(transform.localPosition, target, speed * Time.deltaTime);

        if (transform.localPosition == endPoint)
        {
            target = startPoint;
        }
        else if (transform.localPosition == startPoint)
        {
            target = endPoint;
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы