目錄:
1.基本信息
2.示例工程
3.腳本
目標
這篇博客的主要目標是告訴你使用鼠標點擊的位置拾取或放置對象的做法宾娜。
你最終會得到下面的效果:
第一步 基本信息
你可以使用函數(shù)實例化多個給定的游戲對象或預制對象看峻。
Instantiate (Object Target, object’s position, object’s rotation)
或者Instantiate (Object Target)
奄容。
如果你想在屏幕上某個點擊的位置實例化一個游戲對象爽丹,那么首先你就需要找到世界點知残。
你可以使用下面兩種方式來完成這件事:
- 如果你正在做一個射擊類游戲甩苛,為了找到對象被擊中的位置逻悠,可以調用 hit.point
- 你可以使用鼠標的位置很容易轉換成世界坐標的位置。
我們將會使用鼠標的位置把對象放置到世界坐標的位置蚯窥〉Ф欤可以使用下面的函數(shù)來獲得鼠標的位置:Input.mousePosition
,這個函數(shù)返回了以像素的為單位的位置拦赠。所以我們需要把它轉換成世界坐標的位置巍沙。為了轉換鼠標的位置為世界坐標的位置,我們將使用下面的函數(shù):Camera.main.ScreenToWorldPoint
荷鼠,這個函數(shù)會把屏幕的坐標轉換成世界坐標句携。
現(xiàn)在我們可以使用這個位置把對象放置在鼠標點擊的地方。現(xiàn)在通過使用這個函數(shù)允乐,我們會創(chuàng)建一個簡短的演示程序矮嫉。
第二步 示例工程
打開 unity 然后依次點擊 *File >> New Project *
命名為 InstantiateObjectAtSpace 然后從下拉菜單中選擇 2D 之后點擊創(chuàng)建按鈕削咆。創(chuàng)建一個場景,包括主攝像機和一個游戲對象蠢笋,把這個游戲對象作為一個克隆的目標對象拨齐。
你也可以創(chuàng)建一個畫布和一個面板組件然后設置任意的圖像作為背景。(可選)
當然昨寞,圖像也可以用作目標對象瞻惋。為此,我們需要轉換圖片為 2D 精靈援岩,然后在場景中我們可以使用該圖像作為一個游戲對象歼狼。
現(xiàn)在,把下面的 C# 腳本應用到攝像機上享怀,來引用我們想要實例化的目標對象羽峰。
InstantiateAtMousePosition.cs
using UnityEngine;
using System.Collections;
public class InstantiateAtMousePosition : MonoBehaviour {
Vector3 mousePosition,targetPosition;
//To Instantiate TargetObject at mouse position
public Transform targetObject;
float distance=10f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//To get the current mouse position
mousePosition=Input.mousePosition;
//Convert the mousePosition according to World position
targetPosition=Camera.main.ScreenToWorldPoint(new Vector3(mousePosition.x,mousePosition.y,distance));
//Set the position of targetObject
targetObject.position=targetPosition;
//Debug.Log(mousePosition+" "+targetPosition);
//If Left Button is clicked
if(Input.GetMouseButtonUp(0))
{
//create the instance of targetObject and place it at given position.
Instantiate(targetObject,targetObject.transform.position,targetObject.transform.rotation);
}
}
}
第三步 腳本
使用鼠標左鍵來放置對象。
在把對象放置在空間上時凹蜈,保持按住鼠標左鍵按下移動對象的位置限寞。