背景:在Unity 3D中制作小游戏。这是一个自上而下的射手。我正在移动播放器,在其刚体上使用MovePosition()函数,isKinematic设置为false而不使用重力。
期望的行为:当玩家与场景中的障碍物碰撞时,我希望控制玩家的脚本停止尝试将其强制进入对象。
问题:游戏对象的刚体和碰撞器成功阻止玩家穿过固体物体,但玩家有时会抖动,如果物体足够小,玩家就会在物体上出现故障,即使玩家的Y位置是锁定。
问题:为自上而下的射手进行球员移动的最佳方法是什么?我应该使用NavMesh吗?刚体?
答案 0 :(得分:2)
这是我用于自上而下射击游戏的代码,希望对您有所帮助:)
代码-
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shooting : MonoBehaviour
{
public Transform firePoint;
public GameObject bulletPrefab;
public float bulletForce = 20f;
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
void Shoot()
{
GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
rb.AddForce(firePoint.up * bulletForce, ForceMode2D.Impulse);
}
}