游戲是要用小球撞擊搭好的方塊,將其擊落到下面.
先創(chuàng)建2D object Sprite將貼圖放上去.然后搭成這樣的形狀.
每個小方塊都需要
BoxCollider2D 和Rigidbody2D這兩個組件 保證能完成被撞擊和一些物理效果
最下面的木板只需要一個BoxCollider2D就可以了
我在這些的后面放置了一個空物體,它具有一個BoxCollider,使射線能夠在碰到碰撞體時返回碰撞點的信息
上面的紅色小球則需要Rigidbody2D和CircleCollider2D,在小球上需要掛上一個腳本以下是腳本的代碼
using UnityEngine;
using System;
public class BallScript : MonoBehaviour
{? ??
Vector3 _startPos;
Vector3 _endPos;
Vector3 _secendPos;? ?
?Vector3 dir;? ? ??
float speed = 5;? ??
public void OnMouseDown()? ??
{? ? ? ??
_startPos = Input.mousePosition; ? ? ? ? ?//記錄鼠標按下時的位置 ?
}? ?
?public void OnMouseUp() ??
{? ? ? ??
_endPos = Input.mousePosition;? ? ? ? //記錄鼠標彈起時的位置
dir = _startPos - _endPos; ? ? ? ?//獲得小球射擊方向 (向量的減法)
transform.gameObject.GetComponent().AddForce(dir * speed); ? ? ? ?//給小球一個力
transform.gameObject.GetComponent().gravityScale = 0.5f; ? ? ? ? ? //因為一開始小球的重力設為0,所以在這里時小球擁有重力
}
public void OnMouseDrag()//這個方法使鼠標在小球上按下時小球能夠跟隨鼠標
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//創(chuàng)建一條射線
RaycastHit hit;
if (Physics.Raycast(ray, out hit))//當碰到碰撞體時
{
_secendPos = hit.point;//保存碰撞點的坐標
}
_secendPos.z = 0;//使Z軸的坐標為0,因為其它物體的Z軸都為0,讓小球能夠成功撞到
transform.position = _secendPos;//使小球的位置跟隨鼠標
}
}
以上就是自己寫的小程序.能有更好的方法,望指正,萬分感謝.