火箭耗子 5.1 AddForce 加前进的速度 设置离子的层 Physics2D.OverlapCircleAll

原创 2015年07月10日 19:01:39

当按下鼠标的时候给物理加力 5.0后要获取组件然后加AddForce
public float jetpackForce = 75.0f;
    void FixedUpdate () 
{
bool jetpackActive = Input.GetButton("Fire1");

if (jetpackActive)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jetpackForce));
}

Vector2 newVelocity =  GetComponent<Rigidbody2D>().velocity;速度矢量传递
newVelocity.x = forwardMovementSpeed;
GetComponent<Rigidbody2D>().velocity = newVelocity;
}

GetComponent<ParticleSystemRenderer> ().sortingLayerName="Player";   设置粒子系统的层级
GetComponent<ParticleSystemRenderer> ().sortingOrder  = -1;

Collider2D[] enemies = Physics2D.OverlapCircleAll(transform.position, bombRadius, 1 << LayerMask.NameToLayer("Enemies"));

这个方法定义了一个2D碰撞数组,以指定的顶点为圆心(transform.position),设置圆的半径(bombRadius),在指定的层(1 << LayerMask.NameToLayer("Enemies"))作用。
在这个层里指定圆的范围内添加所有包涵collider的个体。返回数组中的个体按照Z递增排列。


public class MouseController : MonoBehaviour {


public float jetpackForce = 75.0f;
public float forwardMovementSpeed = 3.0f;


public float forwardAddSpeed = 0.03f;


public Transform groundCheckTransform;

private bool grounded;

public LayerMask groundCheckLayerMask;

Animator animator;


public ParticleSystem jetpack;


private bool dead = false;


private uint coins = 0;


public AudioClip coinCollectSound;


public AudioSource jetpackAudio;

public AudioSource footstepsAudio;


//public ParallaxScroll parallax;
 


public Text coinsLabel;


void Start (){
animator = GetComponent<Animator>();
}


void FixedUpdate () 
{
if(forwardMovementSpeed <= 10)
{
forwardMovementSpeed += forwardAddSpeed;
}


bool jetpackActive = Input.GetButton("Fire1");


jetpackActive = jetpackActive && !dead;


//parallax.offset = transform.position.x;

if (jetpackActive)
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(0, jetpackForce));
}


if(!dead){
Vector2 newVelocity = GetComponent<Rigidbody2D>().velocity;
newVelocity.x = forwardMovementSpeed;
GetComponent<Rigidbody2D>().velocity = newVelocity;
}


UpdateGroundedStatus();


AdjustJetpack (jetpackActive);


AdjustFootstepsAndJetpackSound(jetpackActive);
}


void UpdateGroundedStatus()
{
//1
grounded = Physics2D.OverlapCircle(groundCheckTransform.position, 0.4f, groundCheckLayerMask);     //返回布尔,检测0.4为半径的园,到地面的距离

//2
animator.SetBool("grounded", grounded);
}


void AdjustJetpack (bool jetpackActive)
{
if(!dead){
jetpack.enableEmission = !grounded;
jetpack.emissionRate = jetpackActive ? 400.0f : 50.0f; 
}
}


void OnTriggerEnter2D(Collider2D collider)
{
if (collider.gameObject.CompareTag("Coins"))
CollectCoin(collider);
else
HitByLaser(collider);
}

void HitByLaser(Collider2D laserCollider)
{
if (!dead)
laserCollider.gameObject.GetComponent<AudioSource>().Play();


dead = true;
jetpack.enableEmission = false;
animator.SetBool("dead", true);
}


void CollectCoin(Collider2D coinCollider)
{
coins++;

Destroy(coinCollider.gameObject);


AudioSource.PlayClipAtPoint(coinCollectSound, transform.position);


coinsLabel.text = coins.ToString();
}


void AdjustFootstepsAndJetpackSound(bool jetpackActive)    
{
footstepsAudio.enabled = !dead && grounded;

jetpackAudio.enabled =  !dead && !grounded;
jetpackAudio.volume = jetpackActive ? 1.0f : 0.5f;        
}
}
-------------------------------------------
using UnityEngine;
using System.Collections;

// 背景移动  设置主相机背景为景深  挂到副相机上
public class ParallaxScroll : MonoBehaviour {
public Renderer background;
public Renderer foreground;

public float backgroundSpeed = 0.02f;
public float foregroundSpeed = 0.06f;


public float offset = 0;


// Update is called once per frame
void Update () {
float backgroundOffset = Time.timeSinceLevelLoad * backgroundSpeed;
float foregroundOffset = Time.timeSinceLevelLoad* foregroundSpeed;

background.material.mainTextureOffset = new Vector2(backgroundOffset, 0);
foreground.material.mainTextureOffset = new Vector2(foregroundOffset, 0);
}
}

火箭鼠的控制脚本

 using UnityEngine; using System.Collections; using UnityEngine.UI; public class MouseControll...
  • haifeng619
  • haifeng619
  • 2016年05月27日 10:23
  • 363

Physics2D.Linecast的使用注意事项

今天做2D游戏使用了Physics2D.Linecast函数,为了使物体不会撞进墙。 RaycastHit2D hit = Physics2D.Linecast(targetPosition, ta...
  • W1095471150
  • W1095471150
  • 2016年09月10日 11:54
  • 2631

火箭耗子 5.1 AddForce 加前进的速度 设置离子的层 Physics2D.OverlapCircleAll

当按下鼠标的时候给物理加力 5.0后要获取组件然后加AddForce public float jetpackForce = 75.0f;     void FixedUpdate ()  { boo...
  • haifeng619
  • haifeng619
  • 2015年07月10日 19:01
  • 1381

Unity中关于作用力方式ForceMode的功能注解

功能注解:ForceMode为枚举类型,用来控制力的作用方式,有4个枚举成员,在以下举例中均设刚体质量为m=2.0f,力向量为f=(10.0f,0.0f,0.0f)。 (1)ForceMode.Fo...
  • QUAN2008HAPPY
  • QUAN2008HAPPY
  • 2014年09月15日 22:45
  • 7705

Unity 中实现子弹时间效果

在以前,学习xna游戏框架时,由于xna封装的游戏元素很少,很多功能,只能自己去写一篇; 如:子弹时间效果; 先来介绍一个何为“子弹时间”效果; 这得始源于:著名科幻电影《黑客帝国》中男主角有一幕,敌...
  • linjf520
  • linjf520
  • 2014年02月14日 11:57
  • 5945

cocos2d-x3.0开发笔记 物理引擎封装Physics深入学习

3.0以后最box2d和chipmunk这两个物理引擎进行了封装,使用起来非常的便利。 官方链接地址:英文版 泰然网:中文教程 offset:重心点 velocity:速度...
  • Cui860
  • Cui860
  • 2014年07月07日 14:21
  • 602

Cocos2d-x中Physics物理引擎碰撞检测,setCategoryBitmask,setContactTestBitmask,setCollisionBitmask

kan 物理世界的创建 Scene* TestPhysics::createScene(){ auto scene=Scene::createWithPhysics();//需要创建...
  • u011056605
  • u011056605
  • 2015年07月15日 14:38
  • 972

[译]A Verlet based approach for 2D game physics-Part One

翻译的一篇来自GameDev上面关于使用Verlet积分器创建简单2D游戏物理效果的文章...
  • i_dovelemon
  • i_dovelemon
  • 2016年03月06日 20:30
  • 578

Physics Engine Box2D(CrossBridge(FlasCC) Version) Demo

1 修改命令行: FLASCC:=/cygdrive/C/Crossbridge_1.0.1/sdk FLEX:=/cygdrive/C/Program Files (x86)/Adobe/Adobe...
  • songxp03
  • songxp03
  • 2013年12月21日 10:05
  • 1866

Libgdx Box2D实战---放开那小球(四:不规则body创建--physics-body-editor的使用)

如果遇到不规则的图形怎么办?难不成要一个个组装吗?这里就要提一个叫做“关节”的名词了,它可以将一个个部分进行组装成自己的形状,特别是各部件独自运转时,比如一辆自行车,它的轮子和车身都是各自运转的。但是...
  • u011747781
  • u011747781
  • 2014年11月15日 09:29
  • 2140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:火箭耗子 5.1 AddForce 加前进的速度 设置离子的层 Physics2D.OverlapCircleAll
举报原因:
原因补充:

(最多只允许输入30个字)