유니티의 물리엔진의 기본 기능들의 샘플 구현

 

중력

유니티는 물리적인 오브젝트에는 중력과 힘 등의 물리 작용들이 적용된다.

 

물리적인 오브젝트란 Rigidbody 컴포넌트가 붙어있는 것으로 이 컴포넌트에서 중력의 적용 여부나 질량, 마찰력 등의 설정을 제어할 수 있다.

 

유니티의 중력은 Physics.gravity로 접근하여 값을 가져오고 변경할 수 있다.

 

이 중력은 Vector3 값으로 기본값은 현실과 동일하게 y 축으로 -9.81으로 되어있다.

 

이 값을 변경하면 중력을 다양한 방식으로 적용할 수 있다.

 

unity - gravity

 

Rigidbody 컴포넌트의 drag 값은 항력을 제어한다. 하지만 이는 선형적인 값으로 현실적인 물리와는 차이가 있다.

 

angular drag는 회전 항력으로 회전력에 적용되는 저항력이다.

 

unity - drag
unity - angular drag

 

 

물리적인 상태의 오브젝트에는 힘을 가해서 움직이거나 회전 또는 범위 내 오브젝트에 거리 비례 힘을 가하는 물리 기능들을 사용할 수 있다.

 

AddForce

물체에 특정 방향으로 특정 크기만큼의 힘을 가한다.

unity - add force

 

AddTorque

물체에 회전력을 준다.

unity - add torque

 

AddExplosionForce

unity - add explosion force

 

AddExplosionForce는 이 함수만 호출한다고 주변에 영향을 주는 것이 아니라 특정한 객체를 기준으로 영향을 줄 주변 객체를 직접 탐색하면서 AddExpolsionForce를 적용시킨다.

 

public void ApplyExplosion(float force, float radius)
{
    Collider[] colliders = Physics.OverlapSphere(transform.position, radius);
    foreach (Collider col in colliders)
    {
        Rigidbody rb = col.GetComponent<Rigidbody>();
        if (rb != null)
        {
            rb.AddExplosionForce(force, transform.position, radius);
        }
    }
}

 

 

샘플 프로젝트 Github 저장소

https://github.com/Bakcoding/unity-physics-sample.gi

728x90
반응형

'Develop > Unity' 카테고리의 다른 글

Input System - Input Actions  (0) 2025.04.10
InputSystem 기본 사용법  (0) 2025.03.25
구글 계정 연동  (1) 2025.02.28
2D 애니메이션, 이펙트  (1) 2024.12.03
Input System 사용시 UI 상호작용 안될때  (0) 2024.11.18

디렉터리 구조나 파일의 위치, 이동, 삭제 등을 좀 편하게 하기 위해서 FTP를 연결해 로컬에서 관리할 수 있도록 한다.

 

FTP 툴은 FileZilla를 사용한다.

 

FileZilla

 

 

FileZilla를 실행하고 필요한 정보를 채운다.

 

호스트는 서버의 ip 주소, 사용자명과 비밀번호는 서버를 만들 때 입력했던 정보를 쓰면 된다.

 

포트는 FTP의 경우 기본적으로 21번 포트를 사용한다.

 

모든 정보를 입력하고 연결을 하면 디렉터리를 직관적으로 확인할 수 있다.

 

 

이제 GUI로 계층 구조를 직관적으로 확인할 수 있다.

 

FTP 사용을 하게 되면 파일을 관리하기 위해서는 읽기 뿐만 아니라 쓰기 권한도 필요하다. 서버에서 생성했던 파일은 소유자와 그룹 모두 서버에서만 사용할 수 있는 상태인데 일단 test.php를 로컬에서 변경할 것 이기 때문에 이 파일의 권한 중 그룹을 변경하고 쓰기 권한도 추가해 본다.

 

일단 파일들이 계속 추가될 것을 대비해서 폴더를 세분화해 둔다.

 

dev 경로를 생성해서 release 루트와 구분되도록 한다.

 

$sudo mkdir /home/username/html/dev

 

 

해당 경로로 test.php 이동

 

$sudo mv /home/username/html/test.php /home/username/html/dev/

 

test.php 권한 수정

 

// 읽기/쓰기 권한 부여
sudo chmod 664 /home/username/html/dev/test.php
// 소유자 , 그룹 수정
sudo chown apache:username /home/username/html/dev/test.php

 

 

php의 수정된 내용은 기존에 페이지가 열릴 때마다 테이블에 인서트 되던 것을 버튼 입력으로 처리 후 결괏값을 페이지에 반영하도록 수정했다.

 

<?php
// MySQL Connection
$servername = "localhost";
$username = "name";
$password = "password";
$dbname = "testdb";

//conn
$conn = new mysqli($servername, $username, $password, $dbname);

//conn check
if ($conn->connect_error){
	die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// data insert test (폼에서 제출 버튼 클릭 시 실행)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $sql = "INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com')";
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully<br>";

        // 테이블 데이터 출력
        echo "<h3>Users Table:</h3>";
        $result = $conn->query("SELECT * FROM users");
        if ($result->num_rows > 0) {
            echo "<table border='1'><tr><th>ID</th><th>Username</th><th>Email</th></tr>";
            while($row = $result->fetch_assoc()) {
                echo "<tr><td>" . $row["id"]. "</td><td>" . $row["username"]. "</td><td>" . $row["email"]. "</td></tr>";
            }
            echo "</table>";
        } else {
            echo "0 results";
        }
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>

<!-- 폼 추가 -->
<form method="POST" action="">
    <button type="submit">Submit</button>
</form>

 

로컬에서 수정한 test.php를 ftp를 사용해서 파일을 덮어쓰기 해본다.

 

이전에는 권한이 없어서 해당 동작이 실패했지만 권한 수정 후 문제없이 동작이 실행되었고 서버에서 vim으로 파일을 열어 변경된 내용을 확인해 보면 잘 바뀐 것을 확인할 수 있다.

 

이제 수정된 test.php 페이지를 열어본다.

 

 

 submit 클릭 시

 

 

FTP 연결까지 이상 없이 완료되었다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

[NHN Cloud Hosting - Linux] 로컬에서 DB 접속  (0) 2025.03.01
vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01

리눅스 서버에서 db를 사용하기에는 불편함이 많아서 로컬에서 클라이언트 툴을 연결해서 사용하기로 한다.

 

툴은 평소에 자주 쓰던 HeidiSQL을 쓰기로 한다.

 

NHN에서 서버의 보안 그룹 관련된 내용을 보면 my_sql은 기본적으로 허용하지 않기 때문에 직접 서버의 콘솔 페이지에서 보안그룹에 들어가서 포트와 접근 ip에 대한 설정을 해주어야 한다.

 

대시보드 > 자세히 보기 > 프로젝트 명 선택

 

보안 그룹 관리에서 추가하여 상태를 변경해 준다.

 

수신 / 사용자 정의 TCP / 3306 (MY-SQL) / IPv4 / 내 로컬 주소 (CIDR)

 

CIDR은 IP 주소 범위를 지정하는 방법인데 0.0.0.0/0은 모든 IP 주소를 허용하는데 내 로컬 주소만 허용하기로 한다.

 

https://ipinfo.io/ 에서 확인하여 내 IP를 특정하여 입력해 준다.

 

이렇게 하면 콘솔에서 보안은 해결되었고 이제 서버의 mysql에 로그인해서 로컬에서 사용할 계정을 따로 추가하도록 한다.

 

CREATE USER 'user_id'@'user_ip' IDENTIFIED BY 'user_password';

 

계정은 접속할 수 있는 IP를 지정(내 로컬 ip)하여 생성한다.

 

그리고 이 계정에 권한을 준다.

 

GRANT ALL PRIVILEGES ON testdb.* TO 'user_id'@'user_ip';
FLUSH PRIVILEGES

 

위에서 만든 계정에 database_name 데이터베이스에 대한 모든 권한(.*)을 준다.

 

이제 이렇게 만든 계정으로 HeidiSQL에 로그인하면 

 

HeidiSQL

 

서버의 db를 GUI로 확인할 수 있어 편한 게 관리할 수 있게 되었다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

[NHN Cloud Hosting - Linux] FTP 연결  (0) 2025.03.01
vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] php 테스트  (1) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01

+ Recent posts