홈>
인터넷에서 궁수 자리라는 게임을 찾았습니다. 이 게임은 매우 재미 있고 질문이 있습니다.이 게임 에서처럼 화살표를 어떻게 움직일 수 있습니까? 각 구마다 다른 중력이 있다는 것을 알고 있지만이 수식을 사용하려고하면 예상대로 작동하지 않습니다. 이 문제를 해결하는 데 도움이 될 수 있습니까? 감사합니다.
public List<PlanetABC> p = new List<PlanetABC>() {
new PlanetABC(){
x = 0.91f,
y = -1.28f,
gravity = 5,
r = 5
},
new PlanetABC(){
x = 8.12f,
y = -1.3f,
gravity = 3,
r = 10
}
};
void Start () {
}
void Update () {
float gravityOnX = 0;
float gravityOnY = 0;
foreach (var planet in p)
{
if (Vector2.Distance(g.transform.position, new Vector2(planet.x, planet.y)) > planet.r)
continue;
if (planet.x > g.transform.position.x)
gravityOnX += planet.gravity;
else gravityOnX -= planet.gravity;
if (planet.y > g.transform.position.y)
gravityOnY += planet.gravity;
else gravityOnY -= planet.gravity;
}
if (currentGravityX > gravityOnX)
currentGravityX -= Time.deltaTime;
else currentGravityX += Time.deltaTime;
if (currentGravityY > gravityOnY)
currentGravityY -= Time.deltaTime;
else currentGravityY += Time.deltaTime;
Debug.Log(currentGravityX + "/" + currentGravityY);
var DEG2RAD = Mathf.PI/180;
float vx1 = Mathf.Cos(angle * DEG2RAD) * power ;
float vy1 = Mathf.Sin(angle * DEG2RAD) * power;
float y = (0.5f * currentGravityY * time + vy1) * time;
float x = (0.5f * currentGravityX * time + vx1) * time;
Vector3 pos = g.transform.position;
pos.x = x;
pos.y = y;
g.transform.position = Vector3.Lerp(g.transform.position, pos, Time.deltaTime);
time += Time.deltaTime;
}
게임은 다음과 같습니다 : https://gprosser.itch.io/sagittarius
- 답변 # 1
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- JavaScript 변수를 HTML div에 '출력'하는 방법
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 문자열에서 특정 문자 제거
중력을 계산하는 방법은 드문 경우입니다. 이런 식으로 구성한 특별한 이유가 있습니까?
역 제곱 감소를 가진 기존의 중력은 다음과 같습니다 ...
원하거나 코스에 따라 이러한 힘을 직접 통합 할 수 있습니다. 그러나 내장 물리 시스템은 이미 이런 종류의 작업을 효율적이고 안정적으로 수행하기 위해 만들어 졌으므로 기존 기술을 활용하는 것은 나쁜 생각이 아닙니다.
버전과의 주요 차이점은 다음과 같습니다.
실제 물리학에서와 같이 역 제곱 법을 사용하여 중력이 떨어짐
행성에는 바깥 쪽 반지름이 없습니다 (원하는 경우 하나를 강제 할 수는 있지만, 발사체가 한 정권에서 다른 정권으로 갑자기 이동함에 따라 힘 필드에 불연속적인 변화가 발생하는 것을 조심하십시오)
가속도는 두 성분을 개별적으로 다루지 않고 x와 y 성분을 모두 고려한 벡터로 계산됩니다
통합 및 프레임 속도 독립은 물리 시스템에 위임됩니다