Переместится в "1" [РЕШЕНО]

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Переместится в "1" [РЕШЕНО]

Сообщение AngryGrey 20 фев 2013, 05:07

Вот такая проблема: есть некий объект который перемещается по оси x влево и вправо. Вот скрипт перемещения:
Синтаксис:
Используется javascript
using UnityEngine;
using System.Collections;

public class FigureMove : MonoBehaviour {
        private GameObject Base;
        private MainDataBase MainData; 
        private Transform myTransform;
        // Use this for initialization
        void Start () {
                Base = GameObject.FindGameObjectWithTag("Base");
                MainData = Base.GetComponent("MainDataBase") as MainDataBase;
                myTransform = transform;
        }
       
       
        bool figure_collision(Vector3 position){
                Vector3 unitPosition;
                if (position.x < 0 || position.x > 10.0f-MainData.xf || position.y < 0.0f)
                {
                        return false;
                }
                else{
                        for (int i = 0; i < 4; i++)
                        {
                                unitPosition = new Vector3(MainData.gpsFigure[0,i],0,MainData.gpsFigure[1,i]);
                                if (MainData.areaMask[Mathf.RoundToInt(position.x + unitPosition.x), Mathf.RoundToInt(position.y + unitPosition.y)])
                                {
                                        return false;
                                }
                        }
                }
                return true;
        }
       
        // Update is called once per frame
        void Update () {
                if(MainData.figureOk){
                        transform.localPosition = Vector3.MoveTowards(transform.localPosition,
                                        new Vector3(transform.localPosition.x,transform.localPosition.y,-1.0f),
                                        Time.deltaTime*2.0f);

                       
                        if (Input.GetKeyDown("a") && figure_collision(myTransform.localPosition - Vector3.right)){
                                myTransform.localPosition = new Vector3(Mathf.RoundToInt(myTransform.localPosition.x-1.0f),
                                        myTransform.localPosition.y,
                                        myTransform.localPosition.z);
                        }
                        if (Input.GetKeyDown("d") && figure_collision(myTransform.localPosition + Vector3.right)){
                                myTransform.localPosition = new Vector3(Mathf.RoundToInt(myTransform.localPosition.x+1.0f),
                                        myTransform.localPosition.y,
                                        myTransform.localPosition.z);
                        }
                }
        }
}
 

Начальное положение объекта = 4, при перемещении влево происходит вычитание 1 из X. При вычитании 1 из 2 почему-то получается не 1 а 0,9999999.... хотя стоит округление. До 2ки вычитание дает верный результат (3, 2...) С движением вправо такой ерунды не замечено.
Последний раз редактировалось AngryGrey 20 фев 2013, 08:19, всего редактировалось 1 раз.
AngryGrey
UNIт
 
Сообщения: 102
Зарегистрирован: 04 фев 2013, 02:58

Re: Переместится в "1"

Сообщение AngryGrey 20 фев 2013, 07:07

Удалил с объекта RigidBody, проблема исчезла.... :-? Так в чем проблема то была?
AngryGrey
UNIт
 
Сообщения: 102
Зарегистрирован: 04 фев 2013, 02:58

Re: Переместится в "1"

Сообщение Guyver 20 фев 2013, 07:15

у rigidbody is kinematik стояло?
Xcombat: 3D шутер на летающих тарелках!
Аватара пользователя
Guyver
UNIверсал
 
Сообщения: 392
Зарегистрирован: 21 июл 2010, 08:04
Откуда: Челябинск

Re: Переместится в "1"

Сообщение AngryGrey 20 фев 2013, 07:39

А ведь точно.. помогло! :) Спасибо!
AngryGrey
UNIт
 
Сообщения: 102
Зарегистрирован: 04 фев 2013, 02:58


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24