예제 #1
0
    public void doMoveToPositionWithUpdate(SpeedUnit in_speedUnit, Vector3 n_point)
    {
        Debug.Log("(" + gameObject.name + ") MoveTo " + n_point + " With update");

        if (in_speedUnit != null)
        {
//			moveUpdatePos = n_point;
            myMove = in_speedUnit;
            myMove.getTimeScaleBySpeed();
            Hashtable moveUpdateHash = iTween.Hash("x", n_point.x, "z", n_point.z, "easeType", "easeInCubic", "loopType", "none", "speed", gameObject.GetComponent <UnitProperty>().getMaxMoveSpeed());
            moveUpdateHash.Add("onstarttarget", gameObject);
            moveUpdateHash.Add("onstart", "moveStart");
            moveUpdateHash.Add("oncompletetarget", gameObject);
            moveUpdateHash.Add("oncomplete", "moveEnd");
            moveUpdateHash.Add("onupdatetarget", gameObject);
            moveUpdateHash.Add("onupdate", "onMoveUpdate");
            iTween.MoveTo(gameObject, moveUpdateHash);

            //use moveUpdate .......
//			myMoveUpdate = new MoveUpdateHelper();
        }
        else
        {
            Debug.Log(" SpeedUnit is required ! ");
        }
    }
    void doCheckPathAndMove()
    {
        if (path != null)
        {
            if (targetRigid.transform.position.Equals(path[path.Count - 1]))
            {
                //				targetRigid.MovePosition(targetRigid.transform.position + targetRigid.transform.forward * Time.deltaTime * moveSpeed);
            }
        }
        else
        {
            if (releasePower > 0)
            {
                float moveSpeed = 0;
                if (explosionCube == null)
                {
                    moveSpeed = myMove.UpdateSpeed(Time.deltaTime);                     //get speed
                    if (moveSpeed > 0)
                    {
                        float timeScale = myMove.getTimeScaleBySpeed();

                        Debug.Log("onMoveUpdate moveSpeed? " + moveSpeed + " , releasePower ? " + releasePower);
                        targetRigid.MovePosition(targetRigid.transform.position + targetRigid.transform.forward * (Time.deltaTime * timeScale));
                    }

                    if (moveSpeed <= 0)
                    {
                        releasePower = 0;
                    }
                }
                else
                {
                    float z_distance = 10;                     //releasePower effect

                    if (targetRigid != null)
                    {
                        targetRigid.AddExplosionForce(targetMaxCharge, explosionCube.transform.localPosition, z_distance, -1F, ForceMode.Impulse);
                        releasePower = 0;
                    }
                }
            }
        }
    }