👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:unity每日一记
⭐🅰️推荐文章⭐
⭐【unity本站最全系列】unity常用API大全一篇文章足以
⭐⭐
文章目录
👨💻1.translate
private void Update()
{
//坦克的移动 = 大小*方向
transform.Translate(Input.GetAxis("Vertical") *Vector3.forward*moveSpeed *Time.deltaTime );
//坦克的旋转 = 大小*轴向
transform.Rotate(Input.GetAxis("Horizontal") *Vector3.up *RotateSpeed *Time .deltaTime );
//头部炮管的旋转 = 大小*轴向
Head.transform.Rotate(Input.GetAxis ("Mouse X") *Vector3.up*HeadSpeed*Time .deltaTime );
//左键发射炮弹
if(Input.GetMouseButtonDown(0))
{
Fire();
}
}
public override void Fire()
{
throw new System.NotImplementedException();
}
}
👨💻2.AddForce
前提是牵引力要大于物体的质量
void Update()
{
cc.AddForce(0 ,0 ,10f);
}
👨💻7.角色控制器的Move
player.Move( transform.position + moveDerictor*velocity *Time.deltaTime );
- 再搭配左右控制旋转
transform.Rotate(Vector.up,speed*Time.deletime * Input.GetAxis("Horizontal"));
👨💻8.Rigibody的速度
[SerializeField] private float moveSpeed_X;
[SerializeField] private float moveSpeed_Y;
private Rigidbody2D rigidbody2D;
private void Start()
{
//获取挂载脚本的物体的刚体组件
rigidbody2D = GetComponent<Rigidbody2D>();
}
private void Update()
{
//水平方向
float horizontal = Input.GetAxis("Horizontal");
//竖直方向
float vertical = Input.GetAxis("Vertical");
rigidbody2D.velocity=new Vector2 (horizontal*moveSpeed_X*Time.deltaTime, vertical* moveSpeed_Y * Time.deltaTime);
//也可以只改变x或y的值
rigidbody2D.velocity = new Vector2(horizontal * moveSpeed_X * Time.deltaTime, rigidbody2D.velocity.y);
rigidbody2D.velocity = new Vector2(rigidbody2D.velocity.x, vertical * moveSpeed_Y * Time.deltaTime);
}
👨💻9Rigibody的MovePosition
将物体瞬间移动到指定位置的坐标,所以前提得获取指定位置得坐标
此时物体并非跟着自己的旋转方向进行移动而是根据自身位置进行改变
(白话:无法变成FPS的第一视角进行当前视角当前前进)
private float vertical;
private float horizontal;
private Rigidbody rigidbody; //玩家的刚体组件
private Vector3 moveDerictor; //移动的方向
public float velocity = 1f; //移动的速度
private void Awake()
{
rigidbody = GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
vertical = Input.GetAxis("Vertical") ;
horizontal = Input.GetAxis("Horizontal") ;
if(Input.GetAxis("Vertical")!= 0 || Input.GetAxis("Horizontal")!= 0)
{
moveDerictor = new Vector3(horizontal, 0, vertical);
moveDerictor = moveDerictor.normalized; //将方向变成单位向量
rigidbody.MovePosition( transform .position + moveDerictor * velocity * Time.deltaTime); //速度*方向 = 向量
}
}
⭐相关文章: 线性差值函数以及平滑阻尼的运用和实践(Lerp AND SmoothDamp)
⭐相关文章:基础不牢,地动山摇系列 ------ 软硬通吃 unity常用API
⭐相关文章:关于游戏剧情模式中用到的基础简单API
⭐相关文章:控制游戏人物移动的细节到底有多少?
⭐相关文章:坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
⭐🅰️系统路线学习点击跳转⭐
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、