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; } } } } }