Unity3D 5.0簡單的射線檢測實現跳躍功能


 

這里是一個簡單的跳躍,5.0和其他版本貌似不一樣,並且,再起跳功能做的不完全。

不過一個基本的思路在這里。

1.首先,射線檢測,這里是利用一個空對象,放到主角對象的下面

2.然后調節射線的位置,在主角對象的下面一點(這點很重要,差不多放在腳下,這樣才能和地面接觸,不然就永遠也和地面接觸不了)

LineCast 兩點之間產生射線,去和某個碰撞器發生碰撞,觸發了碰撞器,返回一個真

先定義要碰撞的碰撞器的層

然后,在綁定主角的腳本文件上開始寫腳本:

using UnityEngine;
using System.Collections;

public class move : MonoBehaviour {

	// Use this for initialization
	private bool grounded = false;
	private Transform groundcheck;
	private bool jump = false; //角色的跳起
	private Rigidbody2D hero;
	public float jumpy = 360f;
	public AudioClip jumpclips; //跳躍音頻
	void Start () {
		groundcheck = transform.Find ("groundcheck");
		//hero = transform.Find ("pk_0");
	
	}
	
	// Update is called once per frame
	void Update () {
		if(Input.GetKey(KeyCode.W)){
			
			gameObject.transform.Translate(Vector3.up*5*Time.deltaTime);
		}
		if(Input.GetKey(KeyCode.S)){
			gameObject.transform.Translate(Vector3.down*5*Time.deltaTime);
		}
		if(Input.GetKey(KeyCode.A)){
			gameObject.transform.Translate(Vector3.left*5*Time.deltaTime);
		}
		if(Input.GetKey(KeyCode.D)){
			gameObject.transform.Translate(Vector3.right*5*Time.deltaTime);
		}
		//與地面接觸為真,太能夠進行跳躍
		grounded = Physics2D.Linecast (transform.position, groundcheck.transform.position,1 << LayerMask.NameToLayer("Ground"));
		if(grounded && Input.GetKeyDown(KeyCode.J)){
			jump = true;

			//設置角色的起跳功能
			if(jump == true){	
				AudioSource.PlayClipAtPoint(jumpclips,gameObject.transform.position);
				gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f,jumpy));
				//hero.AddForce(new Vector2(0f,1000f));
				jump = false;
				grounded = false;
			}

		}
		Debug.DrawLine (transform.position, groundcheck.transform.position,Color.red,1f);
	}

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM