1、获取垂直水平方向上的输入:

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");

2、给刚体一个力:

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime);

3、摄像头45度俯视角:

Camera:

Position:  x()   y()    z(-)

Rotate:    x()  y()    z()

Scale:     x()   y()    z()

4、摄像机跟随:

public GameObject player;
private Vector3 offset; // Use this for initialization
void Start () {
//摄像机与跟随物体的初始相对位置
offset = transform.position - player.transform.position;
} // Update is called once per frame
void LateUpdate () {
//跟随物体的位置加上相对位置
transform.position = player.transform.position + offset;
}

5、物体自己旋转(固定时间,跟幀率无关):

void Update () {
transform.Rotate(new Vector3(, , ) * Time.deltaTime);
}

6、检测碰撞(且碰撞后对方消失):

private void OnTriggerEnter(Collider other)
{
//这里的TAG为对方物体Tag
if (other.gameObject.CompareTag(TAG))
{
//要让对方消失,对方物体要设置为碰撞触发器(即IsTrigger属性要为true)
other.gameObject.SetActive(false);
}
}

7、设置Button里的Text值

GetComponentInChildren<Text>().text = "";

8、移除刚体上的力:

GetComponent<Rigidbody>().velocity = Vector3.zero;
GetComponent<Rigidbody>().angularVelocity = Vector3.zero;

9、背景滾动:

using UnityEngine;

public class BGScroller : MonoBehaviour {

    public float scrollSpeed;
public float tileSizeZ; private Vector3 startPosition; void Start () {
startPosition = transform.position;
} void Update () {
float newPosition = Mathf.Repeat(Time.time * scrollSpeed, tileSizeZ);
transform.position = startPosition + Vector3.forward * newPosition;
}
}

10、出边界后销毀:

using UnityEngine;

public class DestoryByBoundary : MonoBehaviour {

    void OnTriggerExit(Collider other)
{
Destroy(other.gameObject);
}
}

11、把prefabs放入场景中:

Instantiate(object, position, rotation);

12、一定时间后销毁:

using UnityEngine;

public class DestoryByTime : MonoBehaviour {

    public float lifetime;

    void Start () {
Destroy(gameObject, lifetime);
}
}

13、游戏开始等待一定时间,过程中时间间隔,每一关时间间隔:

void Start()
{
StartCoroutine (SpawnWaves());
} IEnumerator SpawnWaves()
{
yield return new WaitForSeconds(startWait);
while (true) {
playerObject.GetComponent<PlayerController>().SetFireByLevel(level);
for (int i = ; i < hazardCount; i++)
{
GameObject hazard = hazards[Random.Range(, hazards.Length)];
Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
Instantiate(hazard, spawnPosition, spawnRotation);
yield return new WaitForSeconds(spawnWait);
}
level++;
yield return new WaitForSeconds(waveWait);
if (gameOver)
{
restartButton.SetActive(true);
restart = true;
break;
}
}
}

14、加载场景:

SceneManager.LoadScene("_Scenes/Main", LoadSceneMode.Single);

15、物体倾斜:

rb.rotation = Quaternion.Euler(0.0f, 0.0f, rb.velocity.x * -tilt);

16、随机旋转:

GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere * tumble;

tumble在5左右。

17、开火触模板:

using UnityEngine;
using UnityEngine.EventSystems; public class SimpleTouchAreaButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool touched;
private int pointerID;
private bool canFire; void Awake()
{
touched = false;
canFire = false;
} public void OnPointerDown(PointerEventData eventData)
{
if (!touched)
{
touched = true;
pointerID = eventData.pointerId;
canFire = true;
}
} public void OnPointerUp(PointerEventData eventData)
{
if (eventData.pointerId == pointerID)
{
canFire = false;
touched = false;
}
} public bool CanFire()
{
return canFire;
}
}

18、位置方向触模板:

using UnityEngine;
using UnityEngine.EventSystems; public class SimpleTouchPad : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{
public float smoothing; private Vector2 origin;
private Vector2 direction;
private Vector2 smoothDirection;
private bool touched;
private int pointerID; void Awake()
{
direction = Vector2.zero;
touched = false;
} public void OnPointerDown(PointerEventData eventData)
{
if (!touched)
{
touched = true;
pointerID = eventData.pointerId;
//set our start point
origin = eventData.position;
}
} public void OnDrag(PointerEventData eventData)
{
if (eventData.pointerId == pointerID)
{
//compare the difference between our start point and current pointer pos
Vector2 currentPosition = eventData.position;
Vector2 directionRaw = currentPosition - origin;
direction = directionRaw.normalized;
}
} public void OnPointerUp(PointerEventData eventData)
{
if (eventData.pointerId == pointerID)
{
//reset everything
direction = Vector2.zero;
touched = false;
}
} public Vector2 GetDirection()
{
smoothDirection = Vector2.MoveTowards(smoothDirection, direction, smoothing);
return smoothDirection;
}
}

19、延迟重复执行:

InvokeRepeating("Fire", delay, fireRate);

20、向目标靠近:

using System.Collections;
using UnityEngine; public class EvasiveManeuver : MonoBehaviour { public float dodge;
public float smoothing;
public float tilt;
public Vector2 startWait;
public Vector2 maneuverTime;
public Vector2 maneuverWait;
public Boundary boundary; private Transform playTransform; private float currentSpeed;
private float targetManeuver;
private Rigidbody rb; void Start () {
rb = GetComponent<Rigidbody>();
GameObject playerObject = GameObject.FindGameObjectWithTag("Player");
if (playerObject != null) {
playTransform = playerObject.transform;
}
currentSpeed = rb.velocity.z;
StartCoroutine(Evade());
} IEnumerator Evade()
{
yield return new WaitForSeconds(Random.Range(startWait.x, startWait.y));
while(true)
{
targetManeuver = Random.Range(, dodge) * -Mathf.Sign(transform.position.x);
if (playTransform != null)
{
targetManeuver = playTransform.position.x;
}
yield return new WaitForSeconds(Random.Range(maneuverTime.x, maneuverTime.y));
targetManeuver = ;
yield return new WaitForSeconds(Random.Range(maneuverWait.x, maneuverWait.y));
}
} void FixedUpdate () {
float newManeuver = Mathf.MoveTowards(rb.velocity.x, targetManeuver, Time.deltaTime * smoothing);
rb.velocity = new Vector3(newManeuver, 0.0f, currentSpeed);
rb.position = new Vector3(
Mathf.Clamp(rb.position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp(rb.position.z, boundary.zMin, boundary.zMax)
);
rb.rotation = Quaternion.Euler(0.0f, 0.0f, rb.velocity.x * tilt);
}
}

21、给按钮绑定事件:

Unity3d工具方法小集的更多相关文章

  1. JQuery操作类数组的工具方法

    JQuery学习之操作类数组的工具方法 在很多时候,JQuery的$()函数都返回一个类似数据的JQuery对象,例如$('div')将返回div里面的所有div元素包装的JQuery对象.在这中情况 ...

  2. jQuery工具方法

    目录 常用工具方法 判断数据类型的方法 Ajax操作 $.ajax 简便写法 Ajax事件 返回值 JSONP 文件上传 参考链接 jQuery函数库提供了一个jQuery对象(简写为$),这个对象本 ...

  3. jQuery晦涩的底层工具方法们

    这里整理的是jQuery源码中一些比较晦涩难懂的.内部的.最底层的工具方法,它们多为jQuery的上层api方法服务,目前包括: jQuery.access jQuery.access: functi ...

  4. angular的工具方法笔记(equals, HashKey)

    分别是angular脏值检测的工具方法equals和 类HashKey的使用方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...

  5. zepto源码学习-02 工具方法-详细解读

    上一篇:地址 先解决上次留下的疑问,开始看到zepto.z[0]这个东西的时候,我很是不爽,看着它都不顺眼,怎么一个zepto的实例对象var test1=$('#items');  test__pr ...

  6. jQuery源代码 解析一 工具方法

    1. 外层沙箱以及命名空间$ 几乎稍微有点经验前端人员都这么做,为了避免声明了一些全局变量而污染,把代码放在一个"沙箱执行",然后在暴露出命名空间(可以为API,函数,对象): 2 ...

  7. Underscore.js 常用类型判断以及一些有用的工具方法

    1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...

  8. 秒味课堂Angular js笔记------Angular js中的工具方法

    Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...

  9. javascript 的工具方法 --- 类型判断

    Javascript中常见类型对象有: Boolean, Number, String, Function, Array, Date, RegExp, Object, Error, Symbol等等. ...

随机推荐

  1. 【BZOJ4766】文艺计算姬(prufer序列)

    点此看题面 大致题意: 让你求一个两边各有\(n\)和\(m\)个点的完全二分图有多少个生成树. \(prufer\)序列 这是一道比较经典的利用\(prufer\)序列结论求解答案的计数题. 大致思 ...

  2. PowerShell批量创建文件夹

    效果如下: 实现关键: mkdir (1..10|%{"hwllo$_"}) 过程概述:

  3. vue中a的href写法

    注意点:href前面要加“:”或者v-bind: 2.字符串要用单引号“ ’ ”包住 加上了冒号是为了动态绑定数据,等号后面可以写变量. 如果不使用冒号,等号后面就可以写字符串等原始类型数据.这是就无 ...

  4. how to create a custom form for sharepoint list

    在VS中创建一个applicationPage映射到Layouts文件夹下,然后代码如下: SPList lstTest = web.Lists["Shared Documents" ...

  5. 分布式压测系列之Jmeter4.0第一季

    1)Jmeter4.0介绍 jmeter是个纯java编写的开源压测工具,apache旗下的开源软件,一开始是设计为web测试的软件,由于发展迅猛,现在可以压测许多协议比如:http.https.so ...

  6. 上传文件,经过Zuul,中文文件名乱码解决办法

    转载请标明出处: http://blog.csdn.net/forezp/article/details/77170470 本文出自方志朋的博客 问题描述 在项目中又一个上传文件的oss服务,直接调用 ...

  7. SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

    转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/springboot3-JdbcTemplates-Mysql/ 本文出 ...

  8. 自定义App首次启动引导页

    代码如下 #import"ZBGuidePageView.h" @interfaceZBGuidePageView()<UIScrollViewDelegate> @p ...

  9. django-多表操作2

    #######多表操作二######## 昨天写了基于双下划线查找,都是两个表之间查找,那再多跨几个表呢?还是一样,一步一步分析 # 跨多表查询: 查询红楼梦这本书的作者的电话: (Author,Bo ...

  10. JavaScript中BOM的基础知识总结

    一.什么是BOM      BOM(Browser Object Model)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管理窗口 ...