首先我们创建一个平面, 就用Cube来创建把,来X和Z设置成10,然后我们就有了一个地形了,然后我们创建需要生成的球,然后我们创建一个空物体,把我们的这个球放到这个空物体下面,然后制作成prefabs,然后我们建一个图标,这里我们就用Cube来代替这个图标,把颜色修改为红色,我们还需要创建一个空物体,让他离我们的地形Y为0.5f,主要是为了在这个地方实例化出球,然后我们在这个空物体上写一个C#脚本,
代码如下:
using UnityEngine;
using System.Collections;
public class SphereSpawn : MonoBehaviour
{
public GameObject spherePrefab;
public Transform redSphere;
void Update ()
{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);//拿到点击屏幕的点
RaycastHit hitinfo;
bool isCollider = Physics.Raycast (ray, out hitinfo);//拿到碰撞的点
if (isCollider && hitinfo.collider.tag == "Ground") {
redSphere.position = hitinfo.point;
}
if (Input.GetMouseButtonDown (0)) {
//实例化小球
SpawnSphere();
}
}
void SpawnSphere()
{
GameObject go= GameObject.Instantiate(spherePrefab,transform.position,Quaternion.identity)as GameObject;
go.GetComponent<MoveSphere>().targetPosition=redSphere.position;
}
}
// 上面这里主要的功能是判断鼠标点击时间(用射线检测),和实例化球,
然后我们在我们的预设物体上面,是在父物体身上写一个脚本
using UnityEngine;
using System.Collections;
public class MoveSphere : MonoBehaviour
{
public Vector3 targetPosition;
//需要移动到的位置
private GameObject sphere;
void Start ()
{
//让球向上然后向下
sphere=transform.Find("Sphere").gameObject;
iTween.MoveTo (this.gameObject, iTween.Hash ("time", 2, "position", targetPosition, "easetype", iTween.EaseType.easeOutCubic));
iTween.FadeTo (this.gameObject, iTween.Hash ("time", 2, "delay", 2, "alpha", 0, "oncomplete", "destorySprere"));
iTween.MoveBy (sphere, iTween.Hash ("time", 1, "y", 5, "easetype", iTween.EaseType.easeOutCubic));
iTween.MoveBy (sphere, iTween.Hash ( "delay",1 ,"time", 1, "y", -5, "easetype", iTween.EaseType.easeInCubic));
}
void destorySprere ()
{
Destroy (this.gameObject);
}
}
//上面的代码主要是用iTween来实现实例化的球怎么运动和销毁物体
U3D界面: