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. 贪心算法,今年暑假不AC

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037 活动安排问题,可用贪心. 1.把活动按结束时间递增排序. 2.直观上,选择相对活动为未安排活动留 ...

  2. 如何使用react-redux

    之前学习了react,也学习了redux,那么react-redux是什么呢?实际上他是一个第三方的模块,他可以帮助我们在react之中更加方便的使用redux.首先如果想用react-redux,先 ...

  3. 深入浅出C指针

    http://bbs.9ria.com/blog-164422-18039.html 初学者在学习C语言时,通常会遇到两个瓶颈,一个是“递归”,一个是“指针”.大学老师在讲述这两个知识点时通常都是照本 ...

  4. VSS使用方法详解

    Microsoft Visual SourceSafe是美国微软公司出品的版本控制系统,简称VSS.它提供了还原点和并行协作功能,从而使应用程序开发组织能够同时处理软件的多个版本.该版本控制系统引入了 ...

  5. Flask中对MySQL的基本操作

    在Flask-SQLAlchemy中,插入.修改.删除操作,均由数据库会话管理. 会话用 db.session 表示.在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提 ...

  6. javascript--setTimeout定时器

    setTimeout()  可以理解为 定时炸弹      ---------------->隔一段事件执行,并且只会执行一次 函数语法: setTimeout(参数1,参数2) 参数1:待执行 ...

  7. jquery获取周对应的日期

    项目中用到按周显示的功能,找了一个,然后自己修改了一下,留着以后用: 这是代码,要是直接显示的话就把第43行去掉就行了,如果想要得到数据按照自己的想法重新渲染就保留43行,直接看51行,52行就是你要 ...

  8. vue 数组数据更新或者对象数据更新 但是页面没有同步问题

    1,使用set函数来设置数据. 2,你可以通过 $forceUpdate 来做这件事.在数据赋值之后 就直接调用 this.$forceUpdata()

  9. svg在html的使用

    <svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> <defs&g ...

  10. Ubunut18.04与Windows传输文件的方式

    ubunut18.04与Windows传输文件的方式 开发环境:ubuntu18.04; 虚拟机:virtual box; 操作系统:Win10_64bits/专业版 在以前使用的ubuntu12.0 ...