示例#1
0
 // Use this for initialization
 void Start()
 {
     anim  = GetComponentInChildren <Animator>();
     size  = (Random.Range(0.5f, 1f));
     speed = 2f * size;
     initMaterials();
     initColor();
     initColliders();
     state = behaviourStates.MOVING;
 }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        if (state == behaviourStates.FALLING)
        {
            // this.transform.position += Vector3.down * Time.deltaTime * 3;
            anim.SetTrigger("LANDING");
            GetComponent <Rigidbody>().MovePosition(this.transform.position + Vector3.down * Time.deltaTime * 3);
            float min = size / 2;
            if (this.transform.position.y < min)
            {
                // Debug.Log(min);
                GetComponent <Rigidbody>().MovePosition(new Vector3(this.transform.position.x, min, this.transform.position.z));
                state = behaviourStates.MOVING;
                moveTo(GameObject.FindGameObjectWithTag("Log").GetComponent <Log>().getFreePosition());
                // Debug.Log(moveTarget.name + ", " + this.transform.position);
                timer = 0;
            }
        }
        if (moveTarget != null && state == behaviourStates.MOVING)
        {
            move();

            if (moveTarget.tag == "Log")
            {
                moveTo(moveTarget.GetComponent <Log>().getFreePosition());
            }

            if (moveTarget.transform.parent.tag == "Log")
            {
                Log log = moveTarget.transform.parent.GetComponent <Log>();
                if (!log.isPositionStillFree(moveTarget))
                {
                    moveTo(log.getFreePosition());
                }
                if ((transform.position - moveTarget.transform.position).magnitude < 1)
                {
                    if (!log.occupyPosition(moveTarget))
                    {
                        moveTo(log.getFreePosition());
                    }
                    else
                    {
                        // Debug.Log(this.transform.position + ", " + moveTarget.transform.position);
                        state = behaviourStates.SITTING;
                        this.transform.position = new Vector3(moveTarget.transform.position.x, moveTarget.transform.position.y + 1.7f, moveTarget.transform.position.z);
                        // moveTo(null);
                    }
                }
            }
        }
    }
示例#3
0
 public void putDown()
 {
     state = behaviourStates.FALLING;
     moveTo(null);
 }
示例#4
0
 public void setBehaviourState(behaviourStates state)
 {
     this.state = state;
 }
示例#5
0
 public void pickUp()
 {
     state = behaviourStates.FLOATING;
     GameObject.FindGameObjectWithTag("Log").GetComponent <Log>().freePosition(moveTarget);
     anim.SetTrigger("PICKUP");
 }