當前位置:編程學習大全網 - 源碼下載 - 怎麽用vb實現憤怒的小鳥中的拉彈弓射擊效果

怎麽用vb實現憤怒的小鳥中的拉彈弓射擊效果

首先,我們來引入壹個新的概念——LineRenderer。在Unity3D中LineRenderer被稱為線性渲染器。通過這個組件,我們可以做壹些比較有創意的東西,比如在遊戲中繪制線段、制作激光特效、武器拖尾效果等。那麽今天呢,我們是用LineRenderer來構造彈弓兩邊的繩子,這個繩子是具有彈性的,在受力結束後可以恢復到原來的狀態。

當用戶按下鼠標左鍵並移動鼠標的時候,小球和繩子都將跟著移動,當松開鼠標左鍵的時候,小球以壹定的角度和壹定的力發射出去。我們今天著重來講繩子的實現。首先我們創建壹個空的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));

}

}

}

  • 上一篇:Docker 概述
  • 下一篇:做好項目管理的關鍵是什麽
  • copyright 2024編程學習大全網