👨?💻个人主页:@元宇宙-秩沅
👨?💻 hallo 欢迎 点赞👍 收藏? 留言📝 加关注?!
👨?💻 本文由 秩沅 原创
👨?💻 收录于专栏:unity每日一记
?相关文章: 线性差值函数以及平滑阻尼的运用和实践(Lerp AND SmoothDamp)
?相关文章:基础不牢,地动山摇系列 ------ 软硬通吃 unity常用API
?相关文章:关于游戏剧情模式中用到的基础简单API
?相关文章:控制游戏人物移动的细节到底有多少?
?相关文章:坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
这里的重点是匀速,实现两点间的移动
void FixedUpdate()
{
gameObject.transform .position =Vector3.MoveTowards(car.transform.position ,storn.transform.position,0.5f);
}
void LateUpdate()
{
transform.position = Vector3.Lerp(transform.position, cube.position, Time.deltaTime);
}
其实最简单的方法就直接把相机作为组件挂载上去即可
void LateUpdate()
{
offset = cube.position - transform.position;
transform.position +=offset;
}
此时的镜头的抖动效果并不是地形的原因,而是每帧时位置累加的原因
但是放在FixedUpdate里面就不会出现该情况
所以实现镜头的同步跟随纯粹的位置实时即可,或者直接将相机组件作为移动物体的子组件,保持固定位置
也就是键盘进行wsad移动
void FixedUpdate()
{
a = gameObject.transform.position.x+Input.GetAxis("Horizontal");
b = gameObject.transform.position.y;
c = gameObject.transform.position.z + Input.GetAxis("Vertical");
//此时z轴一直是固定值,c作为y轴的参数后,移动距离只能在[-1,1]之间变化
move = new Vector3(a,b,c);
gameObject.transform.position = move ;
}
void FixedUpdate()
{
a = transform.position.x+Input.GetAxis("Horizontal");
c = transform.position.z + Input.GetAxis("Vertical");
//此时z轴一直是固定值,c作为y轴的参数后,移动距离只能在[-1,1]之间变化
move = new Vector3(a,c,b);
transform.position = move ;
}
重点在于z轴在固定区域进行上下移动,原因为c的参数是固定的因为z轴未作变化,所以y轴一直都是在不变的z轴位置上进行键盘监听,而范围刚好是是[-1,1]
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();
}
}
前提是牵引力要大于物体的质量
void Update()
{
cc.AddForce(0 ,0 ,10f);
}
将物体瞬间移动到指定位置的坐标,所以前提得获取指定位置得坐标
private void FixedUpdate()
{
xx.MovePosition(Vector2 (1,0) );
}
[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);
}
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
?相关文章:控制游戏人物移动的细节到底有多少?
?相关文章:坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
你们的点赞👍 收藏? 留言📝 关注?是我持续创作,输出优质内容的最大动力!