# How to change the scaling of a gameobject during runtime?

Hi All

I want to change the size of gameobject as a measuring tape.
Suppose if I touch and drag an object it should the increase the size of the gameobject in the specified direction.

Is this possible?

If the camera is axes aligned, then dragging out a Quad is relatively easy. Create a new scene. Create a Quad (GameObject>Create Other>Quad). Attach the following script:

``````#pragma strict

private var pos1 : Vector3;
private var pos2 : Vector3;

function Update () {

if (Input.GetMouseButtonDown(0)) {
pos1 = Input.mousePosition;
pos1.z = transform.position.z - Camera.main.transform.position.z;
pos1 = Camera.main.ScreenToWorldPoint(pos1);
transform.localScale.x = 0;
}

if (Input.GetMouseButton(0)) {
pos2 = Input.mousePosition;
pos2.z = transform.position.z - Camera.main.transform.position.z;
pos2 = Camera.main.ScreenToWorldPoint(pos2);

var v3 = pos2 - pos1;
transform.localScale.x = v3.magnitude;
transform.position = pos1 + v3 * 0.5;
transform.rotation = Quaternion.FromToRotation(Vector3.right, v3);
}
}
``````

you can use drag code , and put a scale function
, here is the code how you can use the drag function in your script , now just put a scaling funtion like
(Unity - Scripting API: Vector3.Scale)
using UnityEngine;
using System.Collections;

``````public class Drag2 : MonoBehaviour {
private float dist;
private bool dragging = false;
private Vector3 offset;
private Transform toDrag;

void Update() {
Vector3 v3;

if (Input.touchCount != 1) {
dragging = false;
return;
}

Touch touch = Input.touches[0];
Vector3 pos = touch.position;

if(touch.phase == TouchPhase.Began) {
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(pos);
if(Physics.Raycast(ray, out hit) && (hit.collider.tag == "Draggable"))
{
Debug.Log ("Here");
toDrag = hit.transform;
dist = hit.transform.position.z - Camera.main.transform.position.z;
v3 = new Vector3(pos.x, pos.y, dist);
v3 = Camera.main.ScreenToWorldPoint(v3);
offset = toDrag.position - v3;
dragging = true;
}
}
if (dragging && touch.phase == TouchPhase.Moved) {
v3 = new Vector3(Input.mousePosition.x, Input.mousePosition.y, dist);
v3 = Camera.main.ScreenToWorldPoint(v3);
toDrag.position = v3 + offset;
}
if (dragging && (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled)) {
dragging = false;
}
}
}
``````