- Home /
Question by
OshakieGittens61 · Jun 03, 2016 at 06:18 AM ·
gameobjectraycasttransform.positionswitchteleport
How to develop a script that substitute a gameobject position with my character?
Can someone please give me a script which allows my third person character to switch its position with certain gameobjects with tag "swappable or sub". This is the script i have came up with but it doesnt work:
using UnityEngine;
using System.Collections;
public class Swap : MonoBehaviour {
//This entire script is attach to third person character
public Transform myObjectA; // my player goes here
private Transform myObjectB;
private GameObject Objectb;
private RaycastHit last_rayhit;
public AudioClip audioclip;
// Use this for initialization
void Start () {
}
GameObject GetClickedGameObject()
{
Vector3 origin = transform.position;
Vector3 direction = Camera.main.transform.forward;
float range = 20;
if (Physics.Raycast(origin, direction, out last_rayhit, range))
{
if (last_rayhit.collider.tag == "swappable")
{
myObjectB = last_rayhit.transform;
Objectb.transform.position = myObjectB.transform.position;
return Objectb; // return the transform position of object 2
}
}
else
{ }
return null;
}
private void SwapWith()
{
Vector3 tempPosition = myObjectA.position;
myObjectA.position = Objectb.transform.position;
Objectb.transform.position = tempPosition;
if (audioclip != null)
{
AudioSource.PlayClipAtPoint(audioclip, transform.position);
}
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
if (GetClickedGameObject() != null)
{
Debug.Log("Its a hit");
SwapWith();
}
}
}
}
Comment