當用戶按下鼠標左鍵並移動鼠標的時候,小球和繩子都將跟著移動,當松開鼠標左鍵的時候,小球以壹定的角度和壹定的力發射出去。我們今天著重來講繩子的實現。首先我們創建壹個空的GameObject將坐標值設為原點,命名為RopeL。接下來我們通過Component->Effects->Line Renderer為添加壹個線性渲染器組件.
using UnityEngine;
using System.Collections;
public class Ball : MonoBehaviour {
//鼠標位置
private Vector3 MousePos;
//左側LineRenderer
private LineRenderer LineL;
//右側LineRenderer
private LineRenderer LineR;
void Start ()
{
//獲取LineRenderer
LineL=GameObject.Find( "Shootor" ).transform.FindChild( "RopeL" ).
transform.GetComponent<LineRenderer>();
LineR=GameObject.Find( "Shootor" ).transform.FindChild( "RopeR" ).
transform.GetComponent<LineRenderer>();
}
void Update ()
{
if (Input.GetMouseButton(0))
{
//獲取鼠標位置
MousePos=Camera.main.ScreenToViewportPoint( new Vector3(Input.mousePosition.x,Input.mousePosition.y,-2F));
//設置小球的位置
transform.position=MousePos;
//重新設置LineRenderer的位置
LineL.SetPosition(0, new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
LineR.SetPosition(0, new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
}
if (Input.GetMouseButtonUp(0))
{
//獲取鼠標位置
MousePos=Camera.main.ScreenToViewportPoint( new Vector3(Input.mousePosition.x,Input.mousePosition.y,-2F));
//設置小球的位置
transform.position=MousePos;
//重新設置LineRenderer的位置
LineL.SetPosition(0, new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
LineR.SetPosition(0, new Vector3(MousePos.x,MousePos.y,MousePos.z-0.5F));
//計算小球合力方向
Vector3 Vec3L= new Vector3(-2F-MousePos.x,1.8F-MousePos.y,0F-MousePos.z);
Vector3 Vec3R= new Vector3(2F-MousePos.x,1.8F-MousePos.y,0F-MousePos.z);
Vector3 Dir=(Vec3L+Vec3R).normalized;
//獲取剛體結構
transform.GetComponent<Rigidbody>().useGravity= true ;
transform.GetComponent<Rigidbody>().AddForce(Dir*10F,ForceMode.Impulse);
//恢復LineRenderer
LineL.SetPosition(0, new Vector3(0F,1.8F,0F));
LineR.SetPosition(0, new Vector3(0F,1.8F,0F));
}
}
}